[英]How do I check if an object property contains all values from a specified array?
[英]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.