Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Arrays_Json_Object - Fatal编程技术网

Javascript 检查值是否为';不存在于JSON对象中

Javascript 检查值是否为';不存在于JSON对象中,javascript,arrays,json,object,Javascript,Arrays,Json,Object,我想通过过滤字符串数组来检查给定对象中是否不存在值 我想检查键数组中的值是否包含在我循环的JSON对象中。如果其中一个值不存在,我必须执行其他操作,但仅当不存在的值(在resArray中)包含在keys数组中时 var statsArray = stats.map(function(stat) { if (keys.indexOf(stat.name) > -1) { return stat; } else { return stat.name + ' not fo

我想通过过滤字符串数组来检查给定对象中是否不存在值

我想检查
数组中的值是否包含在我循环的JSON对象中。如果其中一个值不存在,我必须执行其他操作,但仅当不存在的值(在
resArray
中)包含在
keys
数组中时

var statsArray = stats.map(function(stat) {
  if (keys.indexOf(stat.name) > -1) {
    return stat;
  } else {
    return stat.name + ' not found.';
  }
});

以下是我尝试过的:

var keys = [
    "total_kills",
    "total_deaths",
    "total_planted_bombs",
    "total_defused_bombs",
    "total_kills_knife",
    "total_kills_headshot",
    "total_wins_pistolround",
    "total_wins_map_de_dust2",
    "last_match_wins",
    "total_shots_fired",
    "total_shots_hit",
    "total_rounds_played",
    "total_kills_taser",
    "last_match_kills",
    "last_match_deaths",
    "total_kills_hegrenade",
  ];

  var resArray = stats.playerstats.stats;
  var statsArray = [];

  for (var i = 0; i < keys.length; i++) {
    for(var j = 0; j < resArray.length; j++){

        //if the value in keys array exists, do something
        if(resArray[j]["name"] === keys[i]){
         //do something
       }
       if(<value doesn't exist)>)
         //do something else.
    }
  }
var键=[
“死亡总数”,
“死亡总数”,
“总炸弹数量”,
“拆除的炸弹总数”,
“总杀刀”,
“总死亡人数”,
“总赢一轮”,
“总冠军、地图和灰尘2”,
“最后一场比赛获胜”,
“总射击次数”,
“总投篮命中率”,
“总回合数”,
“杀死泰瑟枪的总人数”,
“最后一场比赛”,
“最后一场比赛”,
“击毙手榴弹总数”,
];
var resArray=stats.playerstats.stats;
var statsArray=[];
对于(变量i=0;i如果(您的示例暗示您正在基于所提供键的统计信息和条件存在创建一个新数组。构建此数组的一个简单方法是使用枚举统计信息数组。接下来,在每次迭代的回调中,您可以将
name
属性作为参数传递,以检查特定的
属性是否存在e
出现在
数组中

var statsArray = stats.map(function(stat) {
  if (keys.indexOf(stat.name) > -1) {
    return stat;
  } else {
    return stat.name + ' not found.';
  }
});
这将产生一个新的数组,其中包含stat对象或a,而不考虑它在key中的缺失。但是,只要它是一个有效的数组项,你可以返回你内心想要的任何东西

下面是一个使用数据集的一小部分(但将使用原始数据集)的工作示例:

var键=[
“死亡总数”,
“死亡总数”,
“总炸弹数量”,
“拆除的炸弹总数”,
“总杀刀”,
“总死亡人数”,
“总赢一轮”,
“总冠军、地图和灰尘2”,
“最后一场比赛获胜”,
“总射击次数”,
“总投篮命中率”,
“总回合数”,
“杀死泰瑟枪的总人数”,
“最后一场比赛”,
“最后一场比赛”,
“击毙手榴弹总数”,
];
变量统计=[{
“姓名”:“死亡总数”,
“价值”:25305
}, {
“姓名”:“死亡总数”,
“价值”:27474
}, {
“名称”:“总播放时间”,
“价值”:1822419
}, {
“名称”:“总炸弹数量”,
“价值”:1397
}, {
“名称”:“拆除的炸弹总数”,
“价值”:239
}, {
“名称”:“总冠军”,
“价值”:11477
}, {
“名称”:“造成的总损失”,
“价值”:3783962
}, {
“姓名”:“收入总额”,
“价值”:65159500
}, {
“姓名”:“获救人质总数”,
“价值”:1
}, {
“名称”:“总刀数”,
“价值”:278
}, {
“名称”:“共击杀手榴弹”,
“价值”:168
}, {
“姓名”:“总死亡人数”,
“价值”:699
}, {
“姓名”:“总死亡人数”,
“价值”:1289
}, {
“姓名”:“共杀精英”,
“价值”:37
}, {
“姓名”:“总共五人死亡”,
“价值”:165
}, {
“名称”:“总死亡人数xm1014”,
“价值”:78
}, {
“名称”:“总死亡人数10”,
“价值”:154
}, {
“名称”:“总死亡人数”,
“价值”:330
}, {
“姓名”:“总死亡人数90人”,
“价值”:1105
}, {
“名称”:“总死亡人数”,
“价值”:6934
}, {
“姓名”:“总共杀死ak47人”,
“价值”:4528
}, {
“姓名”:“8月总死亡人数”,
“价值”:137
}, {
“姓名”:“总死亡人数”,
“价值”:540
}, {
“名称”:“总死亡人数”,
“价值”:116
}, {
“名称”:“总死亡人数”,
“价值”:50
}, {
“姓名”:“总死亡人数”,
“价值”:7112
}, {
“名称”:“杀死敌人的武器总数”,
“价值”:2308
}, {
“姓名”:“总共赢得一轮”,
“价值”:843
}, {
“姓名”:“全胜、全胜、全胜、全胜、全胜、全胜、全胜、全胜、全胜”,
“价值”:9
}, {
“名称”:“total_wins_map_cs_italy”,
“价值”:15
}, {
“名称”:“总冠军、地图、办公室”,
“价值”:11
}, {
“名称”:“总计赢得地图”,
“价值”:71
}, {
“名称”:“总计赢得地图”,
“价值”:373
}, {
“名称”:“总计赢得地图2”,
“价值”:4857
}, {
“名称”:“总冠军、地图冠军、灰尘冠军”,
“价值”:25
}, {
“姓名”:“总冠军、地图冠军、地狱之王”,
“价值”:777
}, {
“姓名”:“总冠军、地图冠军、核武器冠军”,
“价值”:247
}, {
“名称”:“总冠军、地图冠军、火车冠军”,
“价值”:47
}, {
“名称”:“捐赠的武器总数”,
“价值”:2466
}, {
“名称”:“总破窗数”,
“价值”:30
}, {
“姓名”:“杀死敌人的总人数”,
“价值”:566
}, {
“姓名”:“总杀刀战”,
“价值”:67
}, {
“姓名”:“总击杀率”与“缩放狙击手”,
“价值”:2284
}, {
“名称”:“总支配权”,
“价值”:270
}, {
“名称”:“总体控制力”,
“价值”:225
}, {
“姓名”:“总复仇”,
“价值”:207
}, {
“名称”:“总命中率”,
“价值”:83704
}, {
“名称”:“总射击次数”,
“价值”:399207
}, {
“名称”:“总回合数”,
“价值”:23419
}, {
“名称”:“总射击次数”,
“价值”:12137
}, {
“名称”:“总镜头数”,
“价值”:21299
}, {
“姓名”:“总射击次数”,
“价值”:777
}, {
“名称”:“总射击次数五次偶数”,
“价值”:3385
}, {
“名称”:“总镜头数”,
“价值”:22667
}];
var statsArray=stats.map(函数(stat){
if(key.indexOf(stat.name)>-1){
返回统计;
}否则{
返回stat.name+“不存在于密钥中”;
}
});

console.log(statsArray);
您可以通过组合使用数组函数来实现所需的功能。例如:

let stats = data.playerstats.stats;
let matches = stats.filter(i => keys.indexOf(i.name) >= 0);
let matchKeys = matches.map(k => k.name);
let negatives = keys.filter(i => matchKeys.indexOf(i) < 0);
let stats=data.playerstats.stats;
让matches=stats.filter(i=>keys.indexOf(i.name)>=0);
让matchKeys=matches.map(k=>k.name);
设negatives=keys.filter(i=>matchKeys.indexOf(i)<0);
然后,您可以循环浏览匹配项/负片,对它们执行您想要的操作


Fiddle.

Look up
hasOwnProperty()
可以通过组合使用数组方法来实现,如
filter
和/或
includes
和/或