私は UnderscoreJs を使用しています。次のコードを考えてみましょう:
var docs = [
{name : 'Anders', niche : 'Web Development'},
{name : 'Johnny', niche : 'Design'},
{name : 'Eric', niche : 'PhotoShop'}
];
var newDocs = _.map(docs, function (doc){
delete doc.niche;
return doc;
});
.each
ここでと のどちらを使用しても問題ありません.map
。結果はまったく同じです。
上記のケースでは、実際に両者の違いは何でしょうか?
ベストアンサー1
map
関数マッピングメソッドとして意図されています。関数引数は値を返す必要がありますが、副作用はないと思われる。
each
命令型ループの機能的な代替品に過ぎませんfor
。その目的は効果を出すことであり、値を返すことは期待されていない。
たとえば、これはより適切な使用法ですmap
:
var docs = getDocs();
var docTitles = _.map(docs, function (doc){
return doc.title;
});
// expect `docs` to be unchanged
一方、これは次のような場合に適していますeach
:
var docs = getDocs();
_.each(docs, function (doc){
delete doc.niche;
});
// expect `docs` to be altered.