【发布时间】:2023-03-20 04:20:01
【问题描述】:
迭代对象时这两种方法有什么区别?
【问题讨论】:
迭代对象时这两种方法有什么区别?
【问题讨论】:
不同之处在于,如果您要迭代的集合是一个具有length 属性的对象,那么_.forEach() 将像数组一样对其进行迭代,而_.forOwn() 将对其进行迭代像一个物体一样覆盖它。
假设你有这个对象:
a = {
x: 100,
y: 200,
length: 2
}
如果您将其迭代为:
_.forEach(a, function(val, key) {
console.log('a[' + key + '] = ' + val);
});
你会得到输出:
a[0] = undefined
a[1] = undefined
而使用_.forOwn() 对其进行迭代,您会得到更合理的结果:
a[x] = 100
a[y] = 200
a[length] = 2
【讨论】: