【发布时间】:2020-05-04 21:24:56
【问题描述】:
所以我有这段代码返回比较 2 个数组的结果。该函数比较两个数组有多少共同值,然后输出共同值的百分比。
const array1 = [1, 2, 3, 7, 1];
const array2 = [1, 3, 6, 7, 6];
const compareThem = (num1, num2) => {
let finalArray = [];
num1.forEach((e1) => num2.forEach((e2) => {
if (e1 === e2) {
finalArray.push(e1)
}
}))
const divideThem = Math.floor((finalArray.length / num1.length) * 100)
const toPercent = (divideThem.toFixed(1) + '%')
return toPercent;
};
console.log(compareThem(array1, array2))
但我想做一些不同的事情。我想按索引进行索引,并让代码说 array1[0] === array2[0], [1] === [1] 等等。我不是在寻找共有值的总数,而是它们共有的索引总数。我不希望代码说 array1[1] === array2[3]。 解决这个问题的最佳方法是什么?我想首先我将不得不使用除 foreach 以外的其他东西?
【问题讨论】:
-
forEach回调函数获取第二个参数,即数组索引。您可以使用它与另一个数组中的相同索引进行比较。 -
这是一个很好奇的问题,因为你想要做的其实比上面的代码要容易得多。
-
@Barmar 但这不会只返回它们有多少共同索引吗?与比较索引处的值相反。所以说 array1[1] = 5 和 array2[1] 也 = 5
-
另外,您的预期输出是什么样的?你已经提到了你不希望它是什么,但没有说你实际上想要什么结果。您是否在使用一系列布尔值:
[true, false, false, true, false]? -
@NickParsons 我希望它返回一个共有值的数组。这样,最终数组的长度可以除以 array1 的长度以返回一个小数,该小数转换为百分比,该百分比将是有多少索引具有相同的值
标签: javascript arrays foreach iterator