javascript - 比较 2 个数组以输出总整数

标签 javascript arrays if-statement for-loop

我有 2 个数字数组。我想遍历每个数组并找到每个数组中 1 个数字加起来达到特定数量 x 的次数。

如果特定数量 x 达到的次数与另一个设定数字 n 的次数相同,则该函数应打印“YES”。如果x未达到n的设定数量,则该函数应打印“NO”。

xn 的值以及两个数组都位于字符串 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/

相关文章:

javascript - 由于 "Could not find the implementation for builder",ng build 和 ng serve 不工作

javascript - 更改 :hover CSS properties with JavaScript

javascript - 从数据库检索后如何将值存储到数据库中,并在每行之前放置复选框?

java - 使用 for 循环在 jTextFields 中设置值

java - 如何缩短java中的if else语句?

C++,一种检查 3 个数组的更简单方法

javascript - 如果通过 Google 跟踪代码管理器自定义 HTML 将 JavaScript 代码插入页面,它们的延迟程度如何?

c - 按字母顺序对单词数组进行排序

php - 在 mysql 中使用 php 数组查询

javascript - 使用 ID 从 Google 表格中查找正确的值 - 避免多个 "else if" block - 构建数组