繁体   English   中英

使用Array.prototype.forEach()方法

[英]Using Array.prototype.forEach() Method

据说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]); }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM