web-dev-qa-db-fra.com

Différence entre _.forEach et _.forOwn dans lodash

Quelle est la différence entre ces deux méthodes lors de l'itération sur un objet?

43
Novellizator

La différence réside dans le fait que si la collection sur laquelle vous êtes en train d'itérer est un objet qui a une propriété length, alors la _.forEach() l'itérera comme s'il s'agissait d'un tableau, tandis que le _.forOwn() itérera dessus comme un objet.

Supposons que vous ayez l'objet:

a = {
  x: 100, 
  y: 200, 
  length: 2
}

Si vous le répétez comme:

_.forEach(a, function(val, key) {
  console.log('a[' + key + '] = ' + val); 
});

vous obtiendrez une sortie:

a[0] = undefined
a[1] = undefined 

alors qu'en itérant dessus avec _.forOwn() vous obtiendrez le plus raisonnable:

a[x] = 100
a[y] = 200
a[length] = 2
61
Thalis K.