亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

查找對象鍵名并將對象添加到匹配數組

查找對象鍵名并將對象添加到匹配數組

慕少森 2022-12-09 15:03:05
我有這個數組: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 推到哪里。
查看完整描述

4 回答

?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

試試看:


array.map((row) => {

  Object.keys(row).map((value) => {

    if (newItem.numbers.indexOf(value) >= 0) {

      row[value].push(newItem);

    }

  });

});


查看完整回答
反對 回復 2022-12-09
?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

你可以這樣做:


    for (let i=0; i<array.length; i++) {

        array[i][newItem.numbers[0]] = array[i][newItem.numbers[0]] || [];

        array[i][newItem.numbers[0]].push(newItem);

    }

如果嵌套數組不存在,第一行初始化它。第二行將新項目推送到嵌套數組。


請參閱下面的代碼片段。


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'],

}



for (let i=0; i<array.length; i++) {

    array[i][newItem.numbers[0]] = array[i][newItem.numbers[0]] || [];

    array[i][newItem.numbers[0]].push(newItem);

}


console.log(array); 


查看完整回答
反對 回復 2022-12-09
?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

在解構的幫助下。


const [obj] = array;

const {

  numbers: [key],

} = newItem;

obj[key].push(newItem);

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"],

};


const [obj] = array;

const {

  numbers: [key],

} = newItem;

obj[key].push(newItem);


console.log(array);


查看完整回答
反對 回復 2022-12-09
?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

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'] }


newItem.numbers.forEach(n => array[0]?.[n].push(newItem));


console.log(array);


查看完整回答
反對 回復 2022-12-09
  • 4 回答
  • 0 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號