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

ตรวจสอบว่ามีองค์ประกอบในอาร์เรย์เท่ากันหรือไม่ด้วย JavaScript

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

ตัวอย่างเช่น:

// หากอาร์เรย์อินพุตคือ:
const arr = [1, 3, 3, 1];
// ผลลัพธ์ควรเป็น:
const output = [[1, 1], [3, 3]];

เราจะใช้ HashMap เพื่อติดตามองค์ประกอบที่เคยเกิดขึ้น และวนลูปผ่านอาร์เรย์ด้วย for loop โค้ดจะเป็นดังนี้:

ตัวอย่างโค้ด

const arr = [1, 3, 3, 1];

const groupArray = arr => {
  const map = {};
  const group = [];
  for (let i = 0; i < arr.length; i++) {
    if (typeof map[arr[i]] === 'number') {
      group[map[arr[i]]].push(arr[i]);
    } else {
      // push method คืนค่าความยาวใหม่ของอาร์เรย์
      // และดัชนีขององค์ประกอบที่เพิ่งเพิ่มคือ length-1
      map[arr[i]] = group.push([arr[i]]) - 1;
    }
  }
  return group;
};

console.log(groupArray(arr));

ผลลัพธ์

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

[ [ 1, 1 ], [ 3, 3 ] ]