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

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

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