アンダースコア_.eachと_.mapの違いは何ですか?質問する

アンダースコア_.eachと_.mapの違いは何ですか?質問する

私は 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.

おすすめ記事