132

私はいつもそれらの違いは何だろうと思っていました。やることはみんな同じに見える…

4

4 に答える 4

251

違いは戻り値にあります。

.map() 元のアイテムに対して何らかのアクションを実行して作成されたオブジェクトの新しい配列を返します。

.every() この配列のすべての要素が提供されたテスト関数を満たす場合、ブール値 - true を返します。との重要な違い.every()は、配列内のすべての要素に対して常にテスト関数が呼び出されるとは限らないことです。テスト関数が任意の要素に対して false を返すと、それ以上配列要素は反復されません。したがって、通常、テスト関数には副作用がありません。

.forEach() 何も返さない- 配列内の各アイテムに対して特定のアクションを実行する配列を反復します。

MDN で、これらおよび他の多くの配列反復メソッドについて読んでください。

于 2011-09-07T21:52:39.677 に答える
99

gilly3の答えは素晴らしいです。他のタイプの「要素のループ」機能に関する情報を少し追加したかっただけです。

  • .every()(イテレータが最初に false または falsey を返したときにループを停止します)
  • .some()(イテレータが最初に true または true を返したときにループを停止します)
  • .filter()(フィルター関数が true を返す要素を含み、false を返す要素を省略した新しい配列を作成します)
  • .map()(反復子関数によって返された値から新しい配列を作成します)
  • .reduce()(反復子を繰り返し呼び出して値を構築し、以前の値を渡します。詳細については仕様を参照してください。配列の内容やその他多くのものを合計するのに役立ちます)
  • .reduceRight()(reduce に似ていますが、昇順ではなく降順で機能します)

クレジット: JavaScript の配列に対する TJCrowder For-each?

于 2014-07-31T13:48:52.197 に答える