สมมุติว่าเรามีอาร์เรย์แบบนี้ -
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' ] ]