JavaScript:比较两个数组并打印匹配项数

标签 javascript arrays string-comparison

我深信不疑,我必须比较两个数组并显示总共有多少匹配项,但它不起作用,我也不知道为什么。我真的很感谢任何关于此的提示

/*creating the function to check the lottery results */
function checkNumbers(_customerNumber, _winningNumers) {
    var matches = 0
    for (var i = 0; i < getCustomerNumber.length; i++) {
      for (var j = 0; j < getCustomerNumber.length; j++) {
        if (getCustomerNumber[i] == getWinningNumbers[j]) matches++;
      }
    }
    return matches;
  }
  /*getting the customer number*/

function getCustomerNumber() {
  return ['12', '17', '24', '37', '38', '43'];
}

/*array to return the winning numbers*/

function getWinningNumbers() {
  return ['12', '17', '24', '37', '38', '43'];
}

function displayResult() {
  var winningMessage = "This Week's Winning Numbers are:\n" + getWinningNumbers() + "\n";
  var customerMessage = "The Customer's Number is:\n" + getCustomerNumber() + "\n";
  var numbersMatched = "Numbers Matched\n" + checkNumbers
  alert(winningMessage + customerMessage + numbersMatched);
}

function init() {
  displayResult();
}
window.onload = init;

最佳答案

您可以使用 Array.filter 获取过滤后的列表,使用 .indexOf 检查值是否存在于另一个数组中。

let arr1 = ['12', '17', '24', '37', '38', '43'],
  arr2 = ['22', '47', '24', '38', '38', '44'];

var matches = arr1.filter(function(item){
  return arr2.indexOf(item) > -1
})
console.log(matches)
console.log("Total matches: ", matches.length)

window.onload 也不是一个好习惯。这将替换所有以前的处理程序。你应该使用

window.addEventListener('load', function(){...})

您的代码已修改

/* creating thefunction to check the lottery results */
function checkNumbers(_customerNumber, _winningNumers) {
    return _customerNumber.filter(function(x) {
      return _winningNumers.indexOf(x)
    }).length
  }
  /* getting the customer number */

function getCustomerNumber() {
  return ['12', '17', '24', '37', '38', '43'];
}

/* array toreturn the winning numbers */

function getWinningNumbers() {
  return ['12', '17', '24', '37', '38', '43'];
}

function displayResult() {
  var winNum = getWinningNumbers();
  var custNum = getCustomerNumber();
  var winningMessage = "This Week's Winning Numbers are:\n" + winNum + "\n";
  var customerMessage = "The Customer's Number is:\n" + custNum + "\n";
  var numbersMatched = "Numbers Matched\n" + checkNumbers(custNum, winNum)
  console.log(winningMessage, customerMessage, numbersMatched);
}

function init() {
  displayResult();
}
window.addEventListener('load', init);

关于JavaScript:比较两个数组并打印匹配项数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40582567/

相关文章:

javascript - 如何使用 angular cli 默认试运行

javascript - JavaScript 中的动态回调

javascript - Highcharts 以一种奇怪的方式分解我的数据数组

javascript - 列出从现在到用户输入的特定数字的所有闰年

php - 多维数组表填充

C 字符串比较失败?

regex - 如何使用 awk 提取具有精确匹配的行

.net - 当其他 div 可见时隐藏 Div

javascript - 不使用 swfobject.embedSWF 从 youtube API 获取状态

string - 如何在 OCaml 中比较字符串?