JavaScript 中索引和最小的公共元素

问题

我们需要编写一个 JavaScript 函数,它接受两个文字数组 arr1 和 arr2 作为第一个和第二个参数。

我们的函数应该找出arr1 和 arr2 中具有最小列表索引 sum的公共元素。如果答案之间存在选择关系,我们应该输出所有没有顺序要求的答案。

例如,如果函数的输入是 -

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

以上是 JavaScript 中索引和最小的公共元素 的全部内容, 来源链接: utcz.com/z/357879.html

回到顶部