Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

องค์ประกอบทั่วไปที่มีผลรวมดัชนีน้อยที่สุดใน JavaScript


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้อาร์เรย์ของตัวอักษรสองตัวคือ arr1 และ arr2 เป็นอาร์กิวเมนต์แรกและตัวที่สอง

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

ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ−

const arr1 = ['a', 'b', 'c', 'd'];
const arr2 = ['d', 'a', 'c'];

จากนั้นผลลัพธ์ควรเป็น −

const output = ['a'];

คำอธิบายผลลัพธ์

เนื่องจาก 'd' และ 'a' เป็นเรื่องปกติในอาร์เรย์ทั้งสองผลรวมดัชนีของ 'd' คือ 3 + 0 =3 และของ 'a' คือ 0 + 1 =1 ดังนั้น 'a' จึงเป็นองค์ประกอบที่จำเป็น /P>

ตัวอย่าง

ต่อไปนี้เป็นรหัส -

const arr1 = ['a', 'b', 'c', 'd'];
const arr2 = ['d', 'a', 'c'];
const findCommon = (arr1 = [], arr2 = []) => {
   let sum = Infinity
   const map = arr1.reduce((acc, str, index) => {
      acc[str] = index
      return acc
   }, {})
   for (let i = 0; i < arr2.length; i++) {
      const index1 = map[arr2[i]]
      if (index1 >= 0 && index1 + i < sum) {
         sum = index1 + i
      }
   }
   const result = []
   for (let i = 0; i < arr2.length; i++) {
      const index1 = map[arr2[i]]
      if (index1 >= 0 && index1 + i === sum) {
         result.push(arr2[i])
      }
   }
   return result
}
console.log(findCommon(arr1, arr2));

ผลลัพธ์

ต่อไปนี้เป็นเอาต์พุตคอนโซล-

['a']