簡體   English   中英

如何檢查數組是否包含對象的值

[英]How do i check that an array contains values of an object

可以說我們有一個像這樣的對象:

{"A":["00002","00003","00004"]}

和一個數組:

["00002", "00003"]

我想做的是檢查Objects值,如果鍵值不在數組中全部存在,則提醒用戶鍵A值在數組中不存在。

如果A未知,該怎么辦?

您可以在數組上執行.filter並檢查所有值是否在另一個數組中。

 var obj = {"A":["00002","00003","00004"]} var check = ["00002", "00003"]; if(obj.A.filter(el => !check.includes(el)).length){ console.log("Some elements does not exists"); } 

更新:如果您不知道關鍵是什么:

可能有多種方式,我將使用Object.values(obj)[0]來訪問數組。

 var obj = {"A":["00002","00003","00004"]} var check = ["00002", "00003"]; if(Object.values(obj)[0].filter(el => !check.includes(el)).length){ console.log("Some elements does not exists"); } 

您應該在對象內部檢索數組:

object.A

接下來,您需要遍歷要檢查的數組

var allMatch = true;
var object = {"A":["00002","00003","00004"]};
["00002", "00003"].forEach(function(item){
    if(object.A.indexOf(item) === -1){ // -1 when not found
        allMatch = false;
    }
});

alert("Do they all match? " + allMatch);

或者,如果您需要舊版Internet Explorer支持。

var allMatch = true;
var object = {"A":["00002","00003","00004"]};
var arr = ["00002", "00003"];
for(var i=0;i<arr.length;i++){
    if(object.A.indexOf(arr[i]) === -1){ // -1 when not found
        allMatch = false;
        break; // Stop for loop, since it is false anyway
    }
};

alert("Do they all match? " + allMatch);

只是循環並檢查。

 var haystack = {"A":["00002","00003","00004"]}; var needle = ["00002", "00003"]; function allItemsExist(h, n){ for(var k in h) if(!~n.indexOf(h[k])) return false; return true; } if(!allItemsExist(haystack.A, needle)) alert("something is missing"); else alert("everything is here"); 

function containsAllData(obj, key, arr)
{
   if(arr.length < obj[key].length)
   {
      alert("Array is not fully contained!");
      return false;
   }
   for(var i = 0; i < obj[key].length; i++)
      if(arr[i] !== obj[key][i])
      {   
         alert("Array contains different data!");
         return false;
      }
   return true;
}

暫無
暫無

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

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