1. ホーム
  2. javascript

JavaScriptで配列を反復処理し、要素を削除する方法 [重複]について

2023-07-28 22:33:23

質問

私は要素の配列を持っており、そこから特定のものを削除する必要があります。問題は、JavaScriptにはfor eachループがないようで、forループを使用すると、基本的に配列の境界を越えて要素をチェックしようとしたり、インデックスが変更されたために配列内の要素が欠落したりする問題に遭遇することです。私が言っていることをお見せしましょう。

var elements = [1, 5, 5, 3, 5, 2, 4];
for(var i = 0; i < elements.length; i++){
    if(elements[i] == 5){
        elements.splice(i, 1);
    }
}

問題は、elements[1]を削除すると、elements[2]がelements[1]になることです。つまり、最初の問題は、いくつかの要素が検査されないということです。もう一つの問題は、.lengthが変化することで、境界をハードコーディングすると、配列の境界を越えて要素を調べようとする可能性があることです。では、この信じられないほど単純なことを行うための最良の方法は何でしょうか?

どのように解決するのですか?

上から順番に見ていきましょう。

var elements = [1, 5, 5, 3, 5, 2, 4];
for(var i = elements.length -1; i >= 0 ; i--){
    if(elements[i] == 5){
        elements.splice(i, 1);
    }
}