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