这给了我一个关于数字 1、2 和 3 的警报。
[1,2,3].forEach(alert);
这给了我一个错误:
$.extend(true, {}, [1,2,3]).forEach(alert);
错误:
TypeError: Object #<Object> has no method 'forEach'
为什么会发生这种情况,如何循环克隆对象?
这给了我一个关于数字 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
使用 vanilla JS。
我认为你想要的方法是.each()
没关系,我看错了你的问题......
如果要循环遍历对象数组,可以使用,
var numbs = $.extend(true, {}, [1,2,3]);
for (var numb in numbs){
alert(numbs[numb]);
}
在小提琴中工作。 http://jsfiddle.net/v6KFn/