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

จัดกลุ่มองค์ประกอบที่ตรงกันในอาร์เรย์ใน JavaScript

สมมติว่ามีอาร์เรย์ของตัวอักษรที่มีตัวอักษรซ้ำดังนี้:

const arr = [
  'a','a','a','a','d','e','e','f','h','h','h','i','l','m','n',
  'r','s','s',' t','u','v','y','y'
];

เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ดังกล่าว ฟังก์ชันควรจัดกลุ่มตัวอักษรที่เหมือนกันทั้งหมดเข้าไปในซับอาร์เรย์ที่ไม่ซ้ำกัน

ดังนั้น สำหรับอาร์เรย์ข้างต้น ผลลัพธ์ควรเป็นดังนี้:

const output = [
  ['a','a','a','a'], ['d'], ['e','e'], ['f'], ['h','h','h'],
  ['i'], ['l'], ['m'], ['n'], ['r'], ['s','s'], ['t'], ['u'],
  ['v'], ['y','y']
];

ตัวอย่าง

const arr = [
  'a','a','a','a','d','e','e','f','h','h','h','i','l','m','n','r','s','s',' 
  t','u','v','y','y'
];

const bringAlong = (arr = []) => {
  const hash = {};
  return arr.reduce(function(res, e) {
    if(hash[e] === undefined)
      hash[e] = res.push([e]) - 1;
    else
      res[hash[e]].push(e);
    return res;
  }, []);
};

console.log(bringAlong(arr));

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็นดังนี้:

[
  [ 'a', 'a', 'a', 'a' ],
  [ 'd' ],
  [ 'e', 'e' ],
  [ 'f' ],
  [ 'h', 'h', 'h' ],
  [ 'i' ],
  [ 'l' ],
  [ 'm' ],
  [ 'n' ],
  [ 'r' ],
  [ 's', 's' ],
  [ 't' ],
  [ 'u' ],
  [ 'v' ],
  [ 'y', 'y' ]
]