var arr=["test"]; for(var e in arr) console.log(e);
在IE11的控制台中输出:
0包含删除clear add addAll(所有属性)
并且在chrome的控制台中只输出0
,这是预期的。
如何在IE中修复它?我知道我可以使用for(var i=0;i<arr.length;i++)
来解决它。
但我只是想知道为什么IE会输出所有属性。
答案 0 :(得分:2)
使用IE11,对我来说没问题
如果你想要更多的控件使用Array.prototype.forEach方法。它接受一个有三个参数的回调。它们是元素,它们的索引和数组本身。试试
var arr=["test",'ball'];arr.forEach(function(element,index){
console.log(index);
});
答案 1 :(得分:1)
使用hasOwnProperty
方法。
示例:
var arr = ["test"];
for (var e in arr) {
if (arr.hasOwnProperty(e)) {
console.log(e);
}
}
有关为何必要的详细解释:https://stackoverflow.com/a/12017703/1387396
有关hasOwnProperty
方法的详细信息及其在for .. in
循环中的用法:Object.prototype.hasOwnProperty() - JavaScript | MDN