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

ความเท่าเทียมของสองอาร์เรย์ใน JavaScript


เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ตัวเลขสองอาร์เรย์ คือ first และ second และตรวจสอบความเท่าเทียม

ความเท่าเทียมในกรณีนี้จะถูกกำหนดโดยเงื่อนไขสองข้อใดข้อหนึ่ง

  • อาร์เรย์เท่ากันหากมีองค์ประกอบเหมือนกันไม่ว่าลำดับจะเป็นอย่างไร
  • หากผลรวมขององค์ประกอบทั้งหมดของอาร์เรย์แรกและอาร์เรย์ที่สองเท่ากัน

เช่น

[3, 5, 6, 7, 7] และ [7, 5, 3, 7, 6] เป็นอาร์เรย์เท่ากัน
[1, 2, 3, 1, 2] และ [7, 2] ก็เป็นอาร์เรย์เท่ากันเช่นกัน
แต่ [3, 4, 2, 5] และ [2, 3, 1, 4] ไม่เท่ากัน

มาเขียนโค้ดสำหรับฟังก์ชันนี้กัน

ตัวอย่าง

const first = [3, 5, 6, 7, 7];
const second = [7, 5, 3, 7, 6];
const isEqual = (first, second) => {
  const sumFirst = first.reduce((acc, val) => acc+val);
  const sumSecond = second.reduce((acc, val) => acc+val);
  if(sumFirst === sumSecond){
    return true;
  };
  // ทำส่วนนี้หากไม่อยากแก้ไขอาร์เรย์ต้นฉบับ มิฉะนั้นใช้ first และ second
  const firstCopy = first.slice();
  const secondCopy = second.slice();
  for(let i = 0; i < firstCopy.length; i++){
    const ind = secondCopy.indexOf(firstCopy[i]);
    if(ind === -1){
      return false;
    };
    secondCopy.splice(ind, 1);
  };
  return true;
};
console.log(isEqual(first, second));

ผลลัพธ์

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

true