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