据说forEach()方法用于遍历像object这样的任何数组。但是这里
Array.prototype.forEach.call({1:"a",2:"b"},function(eleVal,ele){alert(eleVal+":"+ele)})
上面的代码不起作用,为什么??
答案 0 :(得分:4)
因为{1: "a", 2: "b"}
不是数组,所以它是一个对象。 Array.forEach
要求其目标具有length
属性,而该对象不具有此属性。
尝试使用["a", "b"]
这样的数组,它会起作用,或者使用类似的数组
{0: "a", 1: "b", length: 2}
答案 1 :(得分:3)
向对象添加.length
属性,它将起作用。
请注意,您的索引将从0开始,因此第一个元素将是未定义的。
[].slice.call({1: 'a', 2: 'b', length: 3})
[undefined × 1, "a", "b"]
答案 2 :(得分:1)
另一种方法。我更喜欢这个,因为它不会修改原始对象。
var obj = {1:"a", 2:"b"};
for(var i in obj) { if(obj.hasOwnProperty(i)) console.log(i + ':' + obj[i]); }