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

ตรวจสอบว่าอาร์เรย์สองชุดมีค่าเท่ากัน (ไม่สนใจลำดับ) ใน JavaScript

เรียงลำดับทั้งสองอาร์เรย์ แล้วเปรียบเทียบทีละ index

ใช้ concat().sort() สำเนาและเรียง แล้วลูปเปรียบเทียบ

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


var firstArray = [100, 200, 400];
var secondArray = [400, 100, 200];

function areBothArraysEqual(firstArray, secondArray) {
  // ตรวจสอบประเภทและความยาว
  if (!Array.isArray(firstArray) || !Array.isArray(secondArray) ||
      firstArray.length !== secondArray.length) {
    return false;
  }
  
  // สำเนาและเรียง (ไม่ mutate ต้นฉบับ)
  var tempFirstArray = firstArray.concat().sort();
  var tempSecondArray = secondArray.concat().sort();
  
  // เปรียบเทียบทีละ index
  for (var i = 0; i < tempFirstArray.length; i++) {
    if (tempFirstArray[i] !== tempSecondArray[i]) {
      return false;
    }
  }
  return true;
}

if (areBothArraysEqual(firstArray, secondArray)) {
  console.log("Both are equals");
} else {
  console.log("Both are not equals");
}

วิธีรัน

node fileName.js

ผลลัพธ์

Both are equals

คำอธิบาย

  • Array.isArray() ตรวจสอบว่าเป็นอาร์เรย์จริง
  • concat() สร้างสำเนา (ไม่เปลี่ยนอาร์เรย์ต้นฉบับ)
  • sort() เรียงลำดับ (default: string compare, ตัวเลขต้องส่ง compare function)
  • เปรียบเทียบ === ต้องตรงทั้งค่าและชนิด

วิธีทันสมัย: ใช้ Set และ every()


function arraysEqual(a, b) {
  if (a.length !== b.length) return false;
  const setB = new Set(b);
  return a.every(item => setB.has(item));
}

⚠️ วิธี Set ใช้ได้เฉพาะค่า primitive และไม่มีค่าซ้ำในอาร์เรย์