我基本上有两个数组,我们需要通过检查元素内部值的顺序在同一列上是否都较高来比较它们,然后计数为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找到”。

到目前为止,我已经尝试过了,但是它输出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)

最佳答案

这是解决方案。您两次运行.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);

09-25 14:37