ลบค่าซ้ำออกจากอาร์เรย์ (เก็บแค่ค่าที่ปรากฏครั้งสุดท้าย) แล้วเติม Empty String จำนวนเท่ากับที่ลบไป
ตัวอย่าง
Input: [1,2,3,1,2,3,2,2,3,4,5,5,12,1,23,4,1] Output: [2, 3, 5, 12, 23, 4, 1, '', '', '', '', '', '', '', '', '', '']
ตัวอย่างโค้ด
const deleteAndInsert = arr => {
const { res, count } = arr.reduce((acc, val, i, a) => {
if (a.lastIndexOf(val) === i) {
acc.res.push(val);
} else {
acc.count++;
}
return acc;
}, { count: 0, res: [] });
return res.concat(' '.repeat(count).split(' '));
};
console.log(deleteAndInsert([1,2,3,1,2,3,2,2,3,4,5,5,12,1,23,4,1]));
ผลลัพธ์
[ 2, 3, 5, 12, 23, 4, 1, '', '', '', '', '', '', '', '', '', '' ]
วิธีแบบ Set (ไม่รักษาลำดับ)
const deleteAndInsert = arr => {
const unique = [...new Set(arr)];
const removed = arr.length - unique.length;
return [...unique, ...Array(removed).fill('')];
};
โค้ดต้นฉบับรักษาลำดับ "ครั้งสุดท้ายที่ปรากฏ" (Last Occurrence)