Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript检查JSON对象是否包含值_Javascript_Json_Object_Key - Fatal编程技术网

使用Javascript检查JSON对象是否包含值

使用Javascript检查JSON对象是否包含值,javascript,json,object,key,Javascript,Json,Object,Key,我想检查像下面这样的JSON对象中的某个键是否包含某个值。假设我想检查任何对象中的键“name”是否具有值“Blofeld”(这是真的)。我该怎么做 [ { "id" : 19, "cost" : 400, "name" : "Arkansas", "height" : 198, "weight" : 35 }, { "id" : 21, "cost" : 250, "name" : "Blofeld", "height" : 216, "weight"

我想检查像下面这样的JSON对象中的某个键是否包含某个值。假设我想检查任何对象中的键“name”是否具有值“Blofeld”(这是真的)。我该怎么做

[ {
  "id" : 19,
  "cost" : 400,
  "name" : "Arkansas",
  "height" : 198,
  "weight" : 35 
}, {
  "id" : 21,
  "cost" : 250,
  "name" : "Blofeld",
  "height" : 216,
  "weight" : 54 
}, {
  "id" : 38,
  "cost" : 450,
  "name" : "Gollum",
  "height" : 147,
  "weight" : 22 
} ]

通过简单循环遍历数组中的所有对象,使用:

var json=[…];
var wantedKey='';//这是你的钥匙
var wantedVal=“”;//你在这里的价值
for(var i=0;i
这将为您提供一个数组,其中的元素与name==“Blofeld”匹配:

var数据=[{
“id”:19,
“成本”:400,
“姓名”:“阿肯色州”,
“高度”:198,
“重量”:35
}, {
“id”:21,
“成本”:250,
“姓名”:“布洛菲尔德”,
“高度”:216,
“重量”:54
}, {
“id”:38,
“成本”:450,
“名称”:“咕噜”,
“高度”:147,
“重量”:22
} ];
var result=data.filter(x=>x.name==“Blofeld”);

控制台日志(结果)编写一个简单函数来检查对象数组是否包含特定值

var arr=[{
   "name" : "Blofeld",
   "weight" : 54 
},{
   "name" : "",
   "weight" : 22 
}];

function contains(arr, key, val) {
    for (var i = 0; i < arr.length; i++) {
        if(arr[i][key] === val) return true;
    }
    return false;
}

console.log(contains(arr, "name", "Blofeld")); //true
console.log(contains(arr, "weight", 22));//true

console.log(contains(arr, "weight", "22"));//false (or true if you change === to ==)
console.log(contains(arr, "name", "Me")); //false
var-arr=[{
“姓名”:“布洛菲尔德”,
“重量”:54
},{
“名称”:“,
“重量”:22
}];
函数包含(arr、键、val){
对于(变量i=0;i
您也可以使用
数组。some()
函数:

const arr=[
{
身份证号码:19,
费用:400美元,
名称:“阿肯色州”,
身高:198,
体重:35
}, 
{
id:21,
费用:250,
姓名:'Blofeld',
身高:216,
体重:54
}, 
{
身份证号码:38,
费用:450,
名称:“咕噜”,
身高:147,
体重:22
}
];
log(arr.some(item=>item.name=='Blofeld');
log(arr.some(item=>item.name=='Blofeld2');
//使用lodash搜索对象
常量objToFind1={
id:21,
费用:250,
姓名:'Blofeld',
身高:216,
体重:54
};
常量objToFind2={
id:211,
费用:250,
姓名:'Blofeld',
身高:216,
体重:54
};
log(arr.some(item=>\uu.isEqual(item,objToFind1));
log(arr.some(item=>\uu.isEqual(item,objToFind2))

obj.name==“Blofeld”
当然,钥匙不见了。我刚刚编辑过,谢谢!非常感谢!这就是我所寻求的解决方案,它非常有效!为此,我发现有些()比其他任何选项更具可读性。虽然如果我错了,请纠正我,但是some()比filter()慢,对吗?我认为
filter
some
方法的速度差不多,它们都必须为每次迭代执行一个函数,然而,“some”方法在其函数第一次返回true时会停止迭代
filter
方法将迭代整个数组。因此,如果我需要布尔值来回答是否至少有一个数组项满足给定的条件,我会使用
some
,如果我需要从给定的数组中检索子集数组,我会使用
filter
。如果我需要应用于单个对象而不是数组怎么办?@WhoAmI,我建议使用
lodash
isEqual()
函数()。查看我的更新答案,其中找到了
objToFind1
,而没有找到
objToFind2
。感谢您回答我的问题!我没有尝试,因为@Andriy的解决方案更简单/更短。我同意Andriy有一个更简单的解决方案。我想这是经验上的差距。谢谢你回答我的问题!我采用了@Andriy的解决方案,所以我没有尝试这个。坚如磐石的答案!如果我想要一个包含该值的特定记录,就像我想要返回记录(对象数组中的特定对象),如果它包含的值不是true和false,那么该怎么办
var arr=[{
   "name" : "Blofeld",
   "weight" : 54 
},{
   "name" : "",
   "weight" : 22 
}];

function contains(arr, key, val) {
    for (var i = 0; i < arr.length; i++) {
        if(arr[i][key] === val) return true;
    }
    return false;
}

console.log(contains(arr, "name", "Blofeld")); //true
console.log(contains(arr, "weight", 22));//true

console.log(contains(arr, "weight", "22"));//false (or true if you change === to ==)
console.log(contains(arr, "name", "Me")); //false