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

กรองค่าอาร์เรย์ที่ไม่ซ้ำกันและผลรวมใน JavaScript


สมมุติว่าเรามีอาร์เรย์แบบนี้ -

const arr = [[12345, "product", "10"],[12345, "product", "15"],[1234567, "other", "10"]];

เราควรเขียนฟังก์ชันที่รับอาร์เรย์ดังกล่าว สังเกตว่าอาร์เรย์ย่อยทั้งหมดมีองค์ประกอบอยู่สามองค์ประกอบอย่างแม่นยำ

ฟังก์ชันของเราควรกรองอาร์เรย์ย่อยนั้นที่มีค่าการทำซ้ำเป็นองค์ประกอบแรก นอกจากนี้ สำหรับอาร์เรย์ย่อย เราลบออก เราควรเพิ่มองค์ประกอบที่สามไปยังคู่ที่ไม่ซ้ำที่มีอยู่

ดังนั้น สำหรับอาร์เรย์ด้านบน ผลลัพธ์ควรมีลักษณะดังนี้ −

const output = [[12345, "product", "25"],[1234567, "other", "10"]];

ตัวอย่าง

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

const arr = [[12345, "product", "10"],[12345, "product", "15"],[1234567,
"other", "10"]];
const addSimilar = (arr = []) => {
   const res = [];
   const map = {};
   arr.forEach(el => {
      const [id, name, amount] = el;
      if(map.hasOwnProperty(id)){
         const newAmount = +amount + +res[map[id] - 1][2];
         res[map[id] - 1][2] = '' + newAmount;
      }else{
         map[id] = res.push(el);
      }
   });
   return res;
}
console.log(addSimilar(arr));

ผลลัพธ์

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

[ [ 12345, 'product', '25' ], [ 1234567, 'other', '10' ] ]