Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.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 在js中某个对象的键值对中查找特定值_Javascript - Fatal编程技术网

Javascript 在js中某个对象的键值对中查找特定值

Javascript 在js中某个对象的键值对中查找特定值,javascript,Javascript,我一直在尝试从键值对的值(在数组中)中匹配某个值。比如,如果我想搜索id 462,我想迭代搜索它,就像2013年的第一次搜索一样,如果找不到,然后是2014年,依此类推 我尝试过Object.values(x),但它返回了两年内的所有数组 x={'2013': { matchId: [ '386', '387', '388', '389', '390', ] }, '20

我一直在尝试从键值对的值(在数组中)中匹配某个值。比如,如果我想搜索id 462,我想迭代搜索它,就像2013年的第一次搜索一样,如果找不到,然后是2014年,依此类推

我尝试过Object.values(x),但它返回了两年内的所有数组

x={'2013': 
   { matchId: 
      [ 
        '386',
        '387',
        '388',
        '389',
        '390',
         ] },
  '2014': 
   { matchId: 
      [
        '462',
        '463',
        '464',
        '465',
        '466',
         ] },

}
如果找到值,我想在该年(例如:-2013年)插入一些新的键值对,如


对键进行排序,按顺序循环,并检查所需的值是否在数组中:

const keys = Object.keys(x).sort();
const testValue = '462';
let foundKey;
for (let i = 0; i < keys.length; ++i) {
  if (x[keys[i]].matchId.includes(testValue)) {
    foundKey = keys[i];
    break;
  }
}
constkeys=Object.keys(x.sort();
常量testValue='462';
让我们找到钥匙;
for(设i=0;i

在此结束时,如果没有匹配项,则foundKey将是未定义的,如果找到,则为第一个匹配对象的键(年份)。

对键进行排序,按顺序循环,并检查所需的值是否在数组中:

const keys = Object.keys(x).sort();
const testValue = '462';
let foundKey;
for (let i = 0; i < keys.length; ++i) {
  if (x[keys[i]].matchId.includes(testValue)) {
    foundKey = keys[i];
    break;
  }
}
constkeys=Object.keys(x.sort();
常量testValue='462';
让我们找到钥匙;
for(设i=0;i

在此结束时,如果没有匹配项,则foundKey将是未定义的,如果找到,则为第一个匹配对象的键(年份)。

迭代外部键、年份,如果内部matchId数组包含搜索id,则将其添加到year对象中

const数据={
'2013': { 
matchId:['386','387','388','389','390']
},
'2014': {
matchId:['462','463','464','465','466']
},
};
常量addDataById=(数组、搜索ID、数据)=>{
返回数组和对象值(数组)
.map(年份=>{
if(year.matchId&&Object.values(year.matchId).includes(searchId)){
返回{…年,…数据};
}
回归年;
});
};
const newData=addDataById(数据,'462',{key:'newData'});
console.log(newData);
const newData2=addDataById(数据'123',{key2:'newData'});
console.log(newData2);
log(addDataById(未定义,'462',{key:'newData'}));
log(addDataById(5,'462',{key:'newData'}));

log(addDataById('array','462',{key:'newData'}))迭代外部键、年份,如果内部matchId数组包含搜索id,则将其添加到年份对象

const数据={
'2013': { 
matchId:['386','387','388','389','390']
},
'2014': {
matchId:['462','463','464','465','466']
},
};
常量addDataById=(数组、搜索ID、数据)=>{
返回数组和对象值(数组)
.map(年份=>{
if(year.matchId&&Object.values(year.matchId).includes(searchId)){
返回{…年,…数据};
}
回归年;
});
};
const newData=addDataById(数据,'462',{key:'newData'});
console.log(newData);
const newData2=addDataById(数据'123',{key2:'newData'});
console.log(newData2);
log(addDataById(未定义,'462',{key:'newData'}));
log(addDataById(5,'462',{key:'newData'}));

log(addDataById('array','462',{key:'newData'}))您可以使用hasOwnProperty()方法。使用以下代码执行任务

x={
'2013':
{
matchId:
[
'386',
'387',
'388',
'389',
'390',
]
},
'2014':
{
matchId:
[
'462',
'463',
'464',
'465',
'466',
]
},
}
函数findById(id){
for(x中的var键){
如果(x.hasOwnProperty(键)){
if(x[key]['matchId'].find(x=>x==id)){return{[key]:x[key]}
}
}
}

log(findById('390'))
您可以使用hasOwnProperty()方法。使用以下代码执行任务

x={
'2013':
{
matchId:
[
'386',
'387',
'388',
'389',
'390',
]
},
'2014':
{
matchId:
[
'462',
'463',
'464',
'465',
'466',
]
},
}
函数findById(id){
for(x中的var键){
如果(x.hasOwnProperty(键)){
if(x[key]['matchId'].find(x=>x==id)){return{[key]:x[key]}
}
}
}

console.log(findById('390'))
的可能重复项的可能重复项为防止意外错误,请在使用
对象.值之前检查对象。执行如下操作:
returntypeof array==='object'&&array!==null&&Object.values(array)
@Herb感谢您的输入,虽然不在问题的范围之内,但我确实添加了一些保护。另一种方法是,将其全部放入try/catch中,并在其全部偏离方向时返回一个已定义的值。为防止出现意外错误,请在使用
object.values
之前检查对象。执行如下操作:
returntypeof array==='object'&&array!==null&&Object.values(array)
@Herb感谢您的输入,虽然不在问题的范围之内,但我确实添加了一些保护。另一种方法是将其全部抛出到try/catch中,如果全部都是横向的,则返回一个定义的值。