เรียงลำดับทั้งสองอาร์เรย์ แล้วเปรียบเทียบทีละ 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 และไม่มีค่าซ้ำในอาร์เรย์