具有最小索引和的公共元素(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']
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
JavaScript
PHP