簡體   English   中英

在js中某個對象的鍵值對中找到特定值

[英]find a specific value in key-value pair of some object in js

我一直在嘗試從鍵值對的值(數組中)中匹配某個值。如果我想搜索id 462,我想像在2013年第一次搜索時一樣進行迭代搜索(如果找不到),然后在2014年和以此類推。

我已經嘗試過Object.values(x),但是它返回了所有兩年的所有數組。

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

}

如果找到值,我想在該年份(例如:-2013)中插入一些新的鍵值對,例如

{'2013': 
   { matchId: 
      [ 
        '386',
        '387',
        '388',
        '389',
        '390',
         ] 
      'Andrew':'23',
      'Castle':32}
}

排序鍵,按順序循環,然后檢查所需的值是否在數組中:

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;
  }
}

最后,如果沒有匹配項,則findKey將是未定義的,如果找到第一個匹配對象的鍵(年),則將是未定義的。

遍歷外鍵,年份,如果內部matchId數組包含搜索ID,則將其添加到year對象。

 const data = { '2013': { matchId: ['386', '387', '388', '389', '390'] }, '2014': { matchId: ['462', '463', '464', '465', '466'] }, }; const addDataById = (array, searchId, data) => { return array && Object.values(array) .map(year => { if (year.matchId && Object.values(year.matchId).includes(searchId)) { return {...year, ...data}; } return year; }); }; const newData = addDataById(data, '462', { key: 'newData' }); console.log(newData); const newData2 = addDataById(data, '123', { key2: 'newData' }); console.log(newData2); console.log(addDataById(undefined, '462', { key: 'newData' })); console.log(addDataById(5, '462', { key: 'newData' })); console.log(addDataById('array', '462', { key: 'newData' })); 

您可以使用hasOwnProperty()方法。 使用以下代碼完成任務

 x = { '2013': { matchId: [ '386', '387', '388', '389', '390', ] }, '2014': { matchId: [ '462', '463', '464', '465', '466', ] }, } function findById(id) { for (var key in x) { if (x.hasOwnProperty(key)) { if (x[key]['matchId'].find(x => x == id)) { return { [key]: x[key] } } } } } console.log(findById('390')) 

暫無
暫無

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

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