检查JavaScript中重叠的数组

问题描述 投票:-2回答:1

我有一些像[1,5], [3,6], [2,8],[19,13], [12,15]的数组。当我在函数中传递两个数组时,输出为[1,6], [2,19],[12,15]

我想从2个数组中删除重叠的数字。就像在拳头上一样,第二个数组5和3将在1到6之间重叠。

javascript arrays overlapping
1个回答
0
投票

我相信这就是您想要的:

function removeOverlap(arr1, arr2) {
  if (arr1 === undefined) {
    return arr2;
  }
  
  if (arr2 === undefined) {
    return arr1;
  }
  
  return [Math.min.apply(null, arr1), Math.max.apply(null, arr2)];
}

// Sample:
var myArrays = [[1,5], [3,6], [2,8], [19,13], [12,15]];

for (var i = 0; i < myArrays.length; i = i + 2) {
  console.log(removeOverlap(myArrays[i], myArrays[i + 1]));
}

0
投票

这很容易找到我当前的最小值和下一项的最大值。

let initial  = [ [1, 5], [3, 6], [2, 8], [19, 13], [12, 15] ]
let expected = [ [1, 6], [2, 19], [12, 15] ]
let actual = calculateOverlaps(initial);

console.log(JSON.stringify(actual) === JSON.stringify(expected)); // true

function calculateOverlaps(arr) {
  let result = [];
  for (let i = 0; i < arr.length; i+=2) {
    if (i >= arr.length - 1) {
      result.push(arr[i]); // If the array has an odd size, get last item
    } else {
      let curr = arr[i];
      let next = arr[i + 1];
      result.push([ Math.min(...curr), Math.max(...next) ]);
    }
  }
  return result;
}
© www.soinside.com 2019 - 2024. All rights reserved.