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

แยกอาร์เรย์ตามค่าแรกของ subarray - JavaScript

สมมติว่าเรามีอาร์เรย์ของอาร์เรย์ตัวเลขดังนี้:

const arr = [[1, 45], [1, 34], [1, 49], [2, 34], [4, 78], [2, 67], [4, 65]];

แต่ละ subarray จะมีสมาชิกอยู่ 2 ตัวเสมอ เราต้องเขียนฟังก์ชันที่สร้างอาร์เรย์ใหม่ โดยจัดกลุ่มสมาชิกตัวที่สองของ subarray ที่มีค่าตัวแรกเหมือนกัน

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

const output = [
  [45, 34, 49],
  [34, 67],
  [78, 65]
];

เราสามารถใช้ Array.prototype.reduce() ร่วมกับ Map() เพื่อสร้างอาร์เรย์ที่ต้องการ

ตัวอย่าง

โค้ดต่อไปนี้เป็นตัวอย่าง:

const arr = [[1, 45], [1, 34], [1, 49], [2, 34], [4, 78], [2, 67], [4, 65]];

const constructSimilarArray = (arr = []) => {
  const creds = arr.reduce((acc, val) => {
    const { map, res } = acc;
    if(!map.has(val[0])){
      map.set(val[0], res.push([val[1]]) - 1);
    }else{
      res[map.get(val[0])].push(val[1]);
    };
    return { map, res };
  }, {
    map: new Map(),
    res: []
  });
  return creds.res;
};

console.log(constructSimilarArray(arr));

ผลลัพธ์

จะแสดงผลในคอนโซลดังนี้:

[ [ 45, 34, 49 ], [ 34, 67 ], [ 78, 65 ] ]