找到2个阵列中的交叉点附近

时间:2016-07-23 23:11:58

标签: javascript arrays

假设我有两个阵列:

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]

2 个答案:

答案 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));