繁体   English   中英

为什么我不能在Javascript深度克隆数组上执行forEach?

[英]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.

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