我有 2 个数字数组。我想遍历每个数组并找到每个数组中 1 个数字加起来达到特定数量 x 的次数。
如果特定数量 x
达到的次数与另一个设定数字 n
的次数相同,则该函数应打印“YES”。如果x
未达到n
的设定数量,则该函数应打印“NO”。
x
、 n
的值以及两个数组都位于字符串 input
中。这些值已被拆分为数组,如下面的代码所示。
我设置了 2 个 for
循环来运行每个数组,并设置了一个 if
语句来检查 x
满足 的条件>n
.
我在这段代码中使用的数组应该打印出“YES”的结果,但是每次运行代码时我都会得到“NO”?我尝试修改代码,但没有任何效果。
知道这段代码哪里出了问题以及如何解决问题吗?
谢谢:)
代码:
var input = '2\n3 10\n2 1 3\n7 8 9';
function processData(input) {
var inputArray = input.split('\n');
var n = inputArray[1][0];
var x = inputArray[1].split(' ')[1];
var arrayA = inputArray[2].split(' ');
var arrayB = inputArray[3].split(' ');
var total = 0;
for(var i = 0; i < arrayA.length; i++) {
for(var j = 0; j < arrayB.length; j++) {
if(arrayA[i] + arrayB[j] == x) {
total = total + 1;
} if (total == n) {
return 'YES';
}
}
}
return 'NO';
}
console.log(processData(input));
最佳答案
arrayA[i]
和 arrayB[j]
是字符串,因此 arrayA[i] + arrayB[j]
将是串联其中(例如:'2' + '3' === '23'
)。
如果您的逻辑是正确的(我不太明白您要做什么),那么在添加它们之前使用 parseInt 或其他方法将它们转换为数字应该就足够了:
if(+arrayA[i] + (+arrayB[j]) == +x) { // used unary + to convert to number
total = total + 1;
} if (total == n) {
return 'YES';
}
PS:更简洁的版本是将数组中的每个字符串转换为数字,但这涉及到在代码中添加 3 个以上的字符。
PS2:您获取输入数据的方式很奇怪。如果您从 JS 代码中的其他位置获取它,您可以简单地将其作为具有相关结构的对象传递,否则您可以以更......常见的格式传递它,例如 JSON。
关于javascript - 比较 2 个数组以输出总整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19705844/