首页 > 解决方案 > 根据更高的内部值比较数组

问题描述

我基本上有两个数组,我们需要通过检查元素内部值的顺序是否在同一列上都更高,然后计为 1。

我将通过显示示例进行更多解释

第一个数组

const arr1 = [[1, 3], [6, 5], [4, 2]]

第二个数组

const arr2 = [[1, 2], [4, 6], [3, 2]]

基于以上两个,我们将检查两者的三个元素,

第一个元素 - arr1具有[1, 3]arr2具有[1, 2]并且您可以看到它们在第二列上都较高并且应该计数。

第二个元素 - arr1具有[6, 5]arr2具有[4, 6] - 两者在不同列上都较高,不应计算在内。

第三个元素 - arr1[4, 2]arr2[3, 2] - 两者都在第一列更高,也应该计算在内

并且上述数组的结果应该是'2 found'。

到目前为止,我尝试了这个,但它输出 5 而不是 2。

const arr1 = [[1, 3], [6, 5], [4, 2]]
const arr2 = [[1, 2], [4, 6], [3, 2]]

function compare(arr1, arr2) {
  count = 0

  arr1.forEach((e1) => arr2.forEach((e2) => {
    if (e1[0] > e1[1] && e2[0] > e1[1]) {
      count += 1
    } else if (e1[1] > e1[0] && e2[1] > e1[0]) {
      count += 1
    }
  })
  )

  return count

}

result = compare(arr1, arr2)

console.log(result)

标签: javascriptarrays

解决方案


这就是解决方案。您正在运行 .forEach 两次。

const arr1 = [
  [1, 3],
  [6, 5],
  [4, 2]
];
const arr2 = [
  [1, 2],
  [4, 6],
  [3, 2]
];

function compare(arr1, arr2) {
  let counter = 0;
  arr1.map((value, index) => {
    let foo = arr1[index];
    let bar = arr2[index];
    if ((foo[0] > foo[1] && bar[0] > bar[1] && foo[0] != bar[1]) || (foo[0] < foo[1] && bar[0] < bar[1] && foo[0] != bar[1])) {
      counter += 1;
    }
  })
  return counter;
}

let c = compare(arr1, arr2)
console.log(c);


推荐阅读