迭代对象时这两种方法有什么区别?
答案 0 :(得分:59)
不同之处在于,如果您正在迭代的集合是具有length
属性的对象,那么_.forEach()
将迭代它,就好像它是一个数组,而_.forOwn()
{1}}将像对象一样迭代它。
假设你有对象:
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