Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ลบค่าซ้ำและเติม Empty String ท้ายอาร์เรย์ - JavaScript

ลบค่าซ้ำออกจากอาร์เรย์ (เก็บแค่ค่าที่ปรากฏครั้งสุดท้าย) แล้วเติม 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)