web-dev-qa-db-ja.com

lodashの_.forEachと_.forOwnの違い

オブジェクトを反復処理するとき、これら2つのメソッドの違いは何ですか?

43
Novellizator

違いは、反復対象のコレクションが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
_
61
Thalis K.