4

要素をプッシュするなど、ループ中に配列を変更しても安全ですか?

各メソッドにアンダースコアを使用しています

4

2 に答える 2

1

安全とはどういう意味かわかりませんが、それには正当な理由が必要です。私はそれを少しいじりました、そしてこれが私が得たものです:

_.each(a, function(el) { 
    if (el % 2 == 0) 
        a.push(el + 1); 
    console.log(el); 
});

// logs 1, 2, 3, 4, 5

console.log(a);
// logs [ 1, 2, 3, 4, 5, 3, 5 ]

この場合、追加された要素を調べたい場合を除き、悪影響はありませんが、特定の要素を変更している場合は、より厄介な状況に陥る可能性があります。

_.each(a, function(el, index) { 
    a[index + 1] = el - 1;
    if (el % 2 == 0) 
        a.push(el + 1); 
    console.log(el); 
});

// logs 1, 0, -1, -2, -3

_.mapほとんどのユースケースで使用する方が理にかなっています。

于 2013-11-01T04:46:10.487 に答える