簡體   English   中英

檢查值是否存在於多維數組中並返回布爾值

[英]check if value exists in mulitdimensional array and return boolean

我見過很多有關在javascript中搜索嵌套數組的文章,但是它們都沒有辦法告訴數組中是否不存在任何項。

這聽起來可能令人困惑,所以這里有一些示例:

我有2個數組oldArraynewArray

結構如下:

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中存在的名稱。

這似乎不起作用,因為它是一對一的比較。 第一個數組是正確的,但僅應包含舊數組中存在的名稱的數組是不正確的。

您是否為舊值初始化了數組?

你有例外嗎?

您是否使用Chrome調試過?

編輯:

我認為如果您這樣做:

對於所有舊值,push如果存在,然后再次詢問並推送,它將繼續以無限循環進行推送。

嘗試加個休息

    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


                     }
           }
     }

使用布爾值跟蹤新數組中是否存在匹配項。 然后,在完成newArray的內部for循環之后,檢查boolean以查看是否未找到匹配項,然后推送到其他數組。

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

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM