假设我有两个阵列:
var a = [126, 619, 4192, 753, 901];
var b = [413, 628, 131, 3563, 19];
如何在两个阵列中找到彼此接近的元素到某个百分比? 例如,定义了以下函数,
function f(array1, array2, percentage)
这样
f(a, b, 5);
将返回
[126, 131], [619, 628]
答案 0 :(得分:1)
你必须将array1的每个元素与array2的每个元素进行比较,那里没有捷径。它可以通过嵌套循环轻松完成。一个可能的解决方案:
function f(array1, array2, percentage) {
var result = [];
percentage /= 100;
array1.forEach(function(m){
var maxDiff = m * percentage;
array2.forEach(function(n){
if(Math.abs(m - n) < maxDiff) {
result.push([m, n]);
}
});
});
return result;
}
答案 1 :(得分:0)
只需迭代这两个数组,然后将第一个数组乘以1到所需因子。
function* intersect(a, b, factor=0) {
factor /= 100;
for(let i of a)
for(let j of b)
if(j <= i*(1+factor) && j >= i*(1-factor))
yield [i, j];
}
var a = [126, 619, 4192, 753, 901];
var b = [413, 628, 131, 3563, 19];
console.log(...intersect(a, b, 5));