具有最小索引和的公共元素(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”為所需元素。

示例

 線上演示

程式碼如下所示——

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']

更新於: 2021 年 4 月 21 日

95 次瀏覽

開啟你的職業生涯

完成課程獲得認證

立即開始
廣告
© . All rights reserved.