[英]Why can't I do forEach on a Javascript deep cloned array?
这使我警惕数字1、2和3。
[1,2,3].forEach(alert);
这给我一个错误:
$.extend(true, {}, [1,2,3]).forEach(alert);
错误:
TypeError: Object #<Object> has no method 'forEach'
为什么会发生这种情况,以及如何遍历克隆的对象?
您的.extend()
调用正在创建一个普通对象,而不是一个数组。 (也就是说,您实际上并不是在创建“深度克隆数组”。)在普通对象上没有像.forEach
这样的迭代器。
原因仅仅是因为数组[]
具有forEach
方法,而对象{}
没有。
如果你是有对象的数组,你可以forEach
遍历数组。
如果你有一个对象,它的一个属性是一个数组,你可以forEach
通过像数组obj.arr.forEach
。
如果你有阵列,其中的每一个具有对象的数组,与数组作为属性,则可以建立这将一个函数forEach
通过外阵列,然后forEach
通过内阵列的对象,然后访问该保持的对象的属性该阵列,然后forEach
通过。
但是您不能{}.forEach
使用香草JS。
我认为您想要的方法是.each()
没关系,我误读了你的问题...
如果要遍历对象数组,可以使用,
var numbs = $.extend(true, {}, [1,2,3]);
for (var numb in numbs){
alert(numbs[numb]);
}
在小提琴中工作。 http://jsfiddle.net/v6KFn/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.