for loop in Javascript

烂漫一生 提交于 2021-01-28 05:11:12

问题


for (let x of a) does not work in IE11. Can I replace it by for (let x in a) ?

for (let key in a) {  
    s += key + ": " + a[key];  
    s += "<br />";  
    }  

for (let key of a) {  
    s += key + ": " + a[key];  
    s += "<br />";  
    }  

回答1:


for...of is not supported in IE11 yet.

You can use for..in to iterate over as it has the support from IE6.

If you just want to add the key and value, you can use Object.keys and build the string that is needed.

let f = '';
let s = '';
let a = {
  firstName: 'Hello',
  lastName: 'JS',
  address: 'ecma'
};

for(let key in a) {
  s += key + ": " + a[key];
  s += "<br />";
}


Object.keys(a).forEach(function(key) {
  f += key + ": " + a[key];
  f += "<br />";
});

document.querySelector('.for-in').innerHTML = f;
document.querySelector('.object-keys').innerHTML = s;
.for-in {
  border: 1px solid green;
  min-height: 20px;
  padding: 20px;
}

.object-keys {
margin-top: 20px;
  border: 1px solid red;
  min-height: 20px;
  padding: 20px;
}
<div class="for-in">
</div>
<div class="object-keys">
</div>



回答2:


IE11 doesn't support for..of. Here's the compatibility table from MDN:

Another idiomatic option for this type of string building is via Array.prototype.reduce:

var string = Object.keys(a).reduce(function(acc, key) {
  return acc + key + ': ' + a[key] + '<br />';
}, '');


来源:https://stackoverflow.com/questions/46458493/for-loop-in-javascript

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!