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

รวมรายการที่ไม่ซ้ำของอาร์เรย์ของอาร์เรย์ในขณะที่รวมค่า - JavaScript


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

ต่อไปนี้เป็นตัวอย่างอาร์เรย์ของเรา -

const example = [[
   'first',
   12
], [
   'second',
   19
], [
   'first',
   7
]];

ควรแปลงดังต่อไปนี้

const example = [[
   'first',
   19
   ], [
      'second',
      19
   ]
];

สมมติว่าเราเขียนฟังก์ชัน combineArray() ที่รับอาร์เรย์เป็นอินพุตและส่งกลับอาร์เรย์ที่รวมกันเป็นเอาต์พุต โค้ดสำหรับอาร์เรย์นั้นจะเป็น -

ตัวอย่าง

const people = [
   ['Ram', 21],
   ['Mohan', 33],
   ['Vikram', 25],
   ['Mike', 29],
   ['Mohan', 41],
   ['Vikram', 26]
];
const combineArray = (people) => {
   const map = {};
   for(const index in people){
      const name = people[index][0];
      const prop = people[index][1];
      if(map[name]){
         map[name] += prop;
      }else{
         map[name] = prop;
      }
   }
   return Object.keys(map).map(key => [key, map[key]]);
}
console.log(combineArray(people));

ผลลัพธ์

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

[ [ 'Ram', 21 ], [ 'Mohan', 74 ], [ 'Vikram', 51 ], [ 'Mike', 29 ] ]

ทำความเข้าใจเกี่ยวกับฟังก์ชัน combineArray -

โดยจะวนซ้ำบนอาร์เรย์ จับคู่ชื่อเป็นคีย์และ prop เป็นค่าในออบเจ็กต์ ทำให้คีย์ sureduplicate ถูกรวมเข้าด้วยกัน และสุดท้ายอ็อบเจ็กต์จะถูกแปลงเป็นอาร์เรย์ของอาร์เรย์และส่งกลับ

ความซับซ้อนของเวลาของฟังก์ชันนี้คือ O(2n) ซึ่งมักจะปัดเศษเป็น O(n) และความซับซ้อนของพื้นที่คือ O(n) เช่นกัน