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