javascript - 根据更高的内部值比较数组
问题描述
我基本上有两个数组,我们需要通过检查元素内部值的顺序是否在同一列上都更高,然后计为 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)
解决方案
这就是解决方案。您正在运行 .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);
推荐阅读
- php - 存储复杂计算并执行它们的最佳方法(MySQL、PHP)
- node.js - 使用 gulp 任务执行 nexe 编译
- c++ - 为什么 npm install ffi 返回错误。使用节点版本 12
- javascript - 如何在移动设备中并排放置两个绝对定位的div?
- java - 使用 BufferedReader 读取所有行而不是清空它
- php - 下载特定 url 上的图像,如果图像不存在则返回错误 PHP
- sql - 当其中一行在 SQL 中具有 NULL 值时如何增加值
- wildfly - 如何禁用standalone.xml中的方法
- flutter - 在 Flutter 中,有没有办法将小部件放在 WebView 顶部以阻止 WebView 的某些部分
- perl - 在 cygwin64 下工作的 CPAN 工具链需要哪些软件包?