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