0

javascript でネストされた配列を検索することに関する多くの投稿を見てきましたが、アイテムが配列に存在しないかどうかを判断する方法はありません。

これは紛らわしいかもしれないので、いくつかの例を次に示します。

私は2つのアレイを持っていoldArrayますnewArray

次のように構成されています。

array(
      [0]=>array([name]:"name"
           [location]:"location")
      [1]=>array([name]:"name2"
           [location]:"location2")
 )

両方の配列がこのように構成されています。

どの名前が古い配列に存在し、新しい配列には存在しないか、またはその逆を知ることができる必要があります。

これが私が試したことです:

 var name= oldArray[key]['name'];

   for (var key in oldArray) {
       for(var i= 0, len = newArray.length; i < len; i++){
                if(newArray[i]['name'] == name){
                          //push to array
                }
                 else{
                      //push to different array
                 }
       }
 }

このようにして、両方の配列に存在するすべての名前を含む配列と、oldArray に存在する名前のみを含む配列が作成されます。

これは 1 対 1 の比較であるため、うまくいかないようです。最初の配列は正しいですが、古い配列に存在する名前のみを含む配列が正しくありません。

4

2 に答える 2

0

ブール値を使用して、新しい配列に一致があるかどうかを追跡します。次に、newArray の内側の for ループを完了した後、ブール値をチェックして、一致するものが見つからないかどうかを確認してから、他の配列にプッシュします。

var name= oldArray[key]['name'];

for (var key in oldArray) 
{
    var foundMatch=false
    for(var i= 0, len = newArray.length; i < len; i++)
    {
        if(newArray[i]['name'] == name)
        {
            //push to array
            foundMatch=true;
                    break;
        }
    }
    if(foundMatch==false)
    //push to different array

}
于 2013-03-18T21:59:43.663 に答える
0

古い値の配列を初期化しましたか?

例外が発生していますか?

Chromeでデバッグしましたか?

編集:

あなたがそうするなら、私は思う:

すべての古い値について、存在する場合はプッシュし、もう一度尋ねてプッシュすると、無限ループでプッシュし続けます。

休憩を追加してみてください

    var name= oldArray[key]['name'];

       for (var key in oldArray) {
           for(var i= 0, len = newArray.length; i < len; i++){
                    if(newArray[i]['name'] == name){
                              //push to array

                    break;
                    }
                     else{
                         if(i==newArray.length-1)
                          //push to different array


                     }
           }
     }
于 2013-03-18T21:10:31.483 に答える