使用Array.prototype.forEach()方法

时间:2013-06-19 12:01:39

标签: javascript

据说forEach()方法用于遍历像object这样的任何数组。但是这里

Array.prototype.forEach.call({1:"a",2:"b"},function(eleVal,ele){alert(eleVal+":"+ele)})

上面的代码不起作用,为什么??

3 个答案:

答案 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]); }