Computer >> Máy Tính >  >> Lập trình >> Javascript

Phần tử phổ biến có tổng chỉ mục ít nhất trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript có hai mảng chữ, arr1 và arr2, làm đối số thứ nhất và thứ hai.

Chức năng của chúng tôi sẽ tìm ra yếu tố chung trong arr1 và arr2 có tổng chỉ mục danh sách ít nhất . Nếu có sự ràng buộc về lựa chọn giữa các câu trả lời, chúng ta nên xuất tất cả chúng mà không cần yêu cầu đặt hàng.

Ví dụ:nếu đầu vào của hàm là−

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

Sau đó, đầu ra phải là -

const output = ['a'];

Giải thích đầu ra

Vì 'd' và 'a' là chung trong cả hai mảng nên tổng chỉ số của 'd' là 3 + 0 =3 và của 'a' là 0 + 1 =1, do đó 'a' là phần tử bắt buộc.

Ví dụ

Sau đây là mã -

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));

Đầu ra

Sau đây là đầu ra của bảng điều khiển−

['a']