这为我提供了数字1,2和3的警报。
[1,2,3].forEach(alert);
这给了我一个错误:
$.extend(true, {}, [1,2,3]).forEach(alert);
错误:
TypeError: Object #<Object> has no method 'forEach'
为什么会发生这种情况,如何循环克隆对象?
答案 0 :(得分:5)
您的.extend()
调用正在创建普通对象,而不是数组。 (也就是说,你实际上并没有创建一个“深度克隆数组”。)在普通对象上没有像.forEach
这样的迭代器。
答案 1 :(得分:2)
原因很简单,因为数组[]
有forEach
个方法,对象{}
没有。
如果你有一个对象数组,你可以通过数组forEach
如果你有一个对象,其中一个属性是一个数组,你可以forEach
通过数组obj.arr.forEach
。
如果你有一个数组数组,每个数组都有对象,数组作为属性,你可以设置一个函数,通过外部数组forEach
,然后通过内部数组的对象forEach
,然后访问持有数组的对象的属性,然后forEach
通过它。
但你不能{}.forEach
使用vanilla JS。
答案 2 :(得分:0)
我认为你想要的方法是 .each()
没关系,我误解了你的问题...
答案 3 :(得分:0)
如果要遍历对象数组,可以使用
var numbs = $.extend(true, {}, [1,2,3]);
for (var numb in numbs){
alert(numbs[numb]);
}