Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

จัดกลุ่มวัตถุภายใน JavaScript อาร์เรย์ที่ซ้อนกัน


สมมติว่า e มี parentArray ที่ประกอบด้วยอาร์เรย์ย่อยหลายอันที่มีขนาดเท่ากัน แต่ละ subarray คืออาร์เรย์ของอ็อบเจ็กต์ที่มีสองคุณสมบัติ:คีย์และค่า ภายในอาร์เรย์ย่อย มีการยืนยันว่าสองอ็อบเจ็กต์ไม่สามารถมีคีย์เดียวกันได้ แต่อาร์เรย์ย่อยทั้งหมดมี nkey คู่เดียวกัน โดยที่ n คือขนาดของอาร์เรย์ย่อย

งานของเราคือการเตรียมอ็อบเจ็กต์ที่มีคีย์เป็นคีย์ของอ็อบเจกต์ และค่าเป็นอาร์เรย์ที่มีค่าทั้งหมดสำหรับคีย์นั้นๆ

นี่คือตัวอย่างอาร์เรย์หลักของเรา -

const parentArray = [[
   {
      key: 123,
      value: 'India'
   }, {
      key: 124,
      value: 'USA'
   }, {
      key: 125,
      value: 'Japan'
   }, {
      key: 126,
      value: 'Denmark'
   }, {
         key: 127,
      value: 'Austria'
   },
], [
   {
      key: 124,
      value: 'Kenya'
   }, {
      key: 126,
      value: 'UK'
   }, {
      key: 123,
      value: 'Germany'
   }, {
      key: 127,
      value: 'Spain'
   }, {
      key: 125,
      value: 'Portugal'
   },
]];

เราจะวนซ้ำในอาร์เรย์หลักและอาร์เรย์ย่อยทั้งหมดทีละรายการ และหากเราพบคีย์ที่ไม่ตรงกัน เราจะพุชลงในอาร์เรย์ของค่า มิฉะนั้น เราจะสร้างอาร์เรย์ค่าใหม่

รหัสเต็มสำหรับสิ่งนี้จะเป็น -

ตัวอย่าง

const parentArray = [[
   {
      key: 123,
      value: 'India'
   }, {
      key: 124,
      value: 'USA'
   }, {
      key: 125,
      value: 'Japan'
   }, {
      key: 126,
      value: 'Denmark'
   }, {
      key: 127,
      value: 'Austria'
   },
], [
   {
      key: 124,
      value: 'Kenya'
   }, {
      key: 126,
      value: 'UK'
   }, {
      key: 123,
      value: 'Germany'
   }, {
      key: 127,
      value: 'Spain'
   }, {
      key: 125,
      value: 'Portugal'
   },
]];
const map = {};
parentArray.forEach(arr => {
   arr.forEach(obj => {
      const { key, value } = obj;
      if(map[key]){
         map[key].push(value);
      }else{
         map[key] = [value]
      }
   })
});
console.log(map);

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็น -

{
   '123': [ 'India', 'Germany' ],
   '124': [ 'USA', 'Kenya' ],
   '125': [ 'Japan', 'Portugal' ],
   '126': [ 'Denmark', 'UK' ],
   '127': [ 'Austria', 'Spain' ]
}