猿问

查找对象键名并将对象添加到匹配数组

我有这个数组:


const array = [

  {

    '12345': [

      { name: 'item one', numbers: ['12345', '77484'] },

      { name: 'item two', numbers: ['12345', '65456'] },

      { name: 'item three', numbers: ['12345', '33920'] },

      { name: 'item four', numbers: ['12345', '99393'] }

    ],

    '67890': [

      { name: 'item one b', numbers: ['67890', '33232'] },

      { name: 'item two b', numbers: ['67890', '33456'] },

      { name: 'item three b', numbers: ['67890', '77665'] },

      { name: 'item four b', numbers: ['67890', '11234'] }

    ]

  }

]

这个对象:


const newItem = { name: 'It is a new item', numbers: ['12345'] }

正如您在数组中看到的,它包含一个对象,该对象包含两个对象数组。这些嵌套数组中的每一个的键都是一个数字,正如您所看到的,键号也包含在每个项目的数字数组中,例如:


{ name: 'item one', numbers: ['12345', '77484'] },

That 包含其数字数组中的键'12345',因此'12345'是该对象的父级。


我想获取 的编号newItem,将其与父键匹配并将其添加到与匹配键父项对应的数组中。


请考虑到这是虚拟数据,并想象其中的数字数组newItem是一个动态值,嵌套数组有很多值。这里的想法是匹配这两个数字以知道应该将 newItem 推到哪里。


慕少森
浏览 153回答 4
4回答

哆啦的时光机

试试看:array.map((row) => {  Object.keys(row).map((value) => {    if (newItem.numbers.indexOf(value) >= 0) {      row[value].push(newItem);    }  });});

HUX布斯

你可以这样做:&nbsp; &nbsp; for (let i=0; i<array.length; i++) {&nbsp; &nbsp; &nbsp; &nbsp; array[i][newItem.numbers[0]] = array[i][newItem.numbers[0]] || [];&nbsp; &nbsp; &nbsp; &nbsp; array[i][newItem.numbers[0]].push(newItem);&nbsp; &nbsp; }如果嵌套数组不存在,第一行初始化它。第二行将新项目推送到嵌套数组。请参阅下面的代码片段。const array = [&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; '12345': [&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { name: 'item one', numbers: ['12345', '77484'] },&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { name: 'item two', numbers: ['12345', '65456'] },&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { name: 'item three', numbers: ['12345', '33920'] },&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { name: 'item four', numbers: ['12345', '99393'] },&nbsp; &nbsp; &nbsp; &nbsp; ],&nbsp; &nbsp; &nbsp; &nbsp; '67890': [&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { name: 'item one b', numbers: ['67890', '33232'] },&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { name: 'item two b', numbers: ['67890', '33456'] },&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { name: 'item three b', numbers: ['67890', '77665'] },&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { name: 'item four b', numbers: ['67890', '11234'] },&nbsp; &nbsp; &nbsp; &nbsp; ],&nbsp; &nbsp; }]const newItem = {&nbsp; &nbsp; name: 'It is a new item',&nbsp; &nbsp; numbers: ['12345'],}for (let i=0; i<array.length; i++) {&nbsp; &nbsp; array[i][newItem.numbers[0]] = array[i][newItem.numbers[0]] || [];&nbsp; &nbsp; array[i][newItem.numbers[0]].push(newItem);}console.log(array);&nbsp;

临摹微笑

在解构的帮助下。const [obj] = array;const {&nbsp; numbers: [key],} = newItem;obj[key].push(newItem);const array = [&nbsp; {&nbsp; &nbsp; "12345": [&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; name: "item one",&nbsp; &nbsp; &nbsp; &nbsp; numbers: ["12345", "77484"],&nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; name: "item two",&nbsp; &nbsp; &nbsp; &nbsp; numbers: ["12345", "65456"],&nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; name: "item three",&nbsp; &nbsp; &nbsp; &nbsp; numbers: ["12345", "33920"],&nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; name: "item four",&nbsp; &nbsp; &nbsp; &nbsp; numbers: ["12345", "99393"],&nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; ],&nbsp; &nbsp; "67890": [&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; name: "item one b",&nbsp; &nbsp; &nbsp; &nbsp; numbers: ["67890", "33232"],&nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; name: "item two b",&nbsp; &nbsp; &nbsp; &nbsp; numbers: ["67890", "33456"],&nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; name: "item three b",&nbsp; &nbsp; &nbsp; &nbsp; numbers: ["67890", "77665"],&nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; name: "item four b",&nbsp; &nbsp; &nbsp; &nbsp; numbers: ["67890", "11234"],&nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; ],&nbsp; },];const newItem = {&nbsp; name: "It is a new item",&nbsp; numbers: ["12345"],};const [obj] = array;const {&nbsp; numbers: [key],} = newItem;obj[key].push(newItem);console.log(array);

qq_笑_17

const array = [&nbsp; {&nbsp; &nbsp; '12345': [&nbsp; &nbsp; &nbsp; { name: 'item one', numbers: ['12345', '77484'] },&nbsp; &nbsp; &nbsp; { name: 'item two', numbers: ['12345', '65456'] },&nbsp; &nbsp; &nbsp; { name: 'item three', numbers: ['12345', '33920'] },&nbsp; &nbsp; &nbsp; { name: 'item four', numbers: ['12345', '99393'] }&nbsp; &nbsp; ],&nbsp; &nbsp; '67890': [&nbsp; &nbsp; &nbsp; { name: 'item one b', numbers: ['67890', '33232'] },&nbsp; &nbsp; &nbsp; { name: 'item two b', numbers: ['67890', '33456'] },&nbsp; &nbsp; &nbsp; { name: 'item three b', numbers: ['67890', '77665'] },&nbsp; &nbsp; &nbsp; { name: 'item four b', numbers: ['67890', '11234'] }&nbsp; &nbsp; ]&nbsp; }]const newItem = { name: 'It is a new item', numbers: ['12345'] }newItem.numbers.forEach(n => array[0]?.[n].push(newItem));console.log(array);
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答