lodash中_.forEach和_.forOwn之间的区别

时间:2014-04-23 20:48:50

标签: foreach lodash

迭代对象时这两种方法有什么区别?

1 个答案:

答案 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