从2个不同的数组中查找匹配的数字

问题描述 投票:0回答:1

我正在为学校制作乐透游戏,我被困在检查匹配数字。

我已经尝试过嵌套的for循环,尽管我可以console.log退出匹配,但在循环的下一次迭代中它会被覆盖,我不知道如何解决此问题。

这些是我挑选的号码,存储在这里。

myNumbers=[1,2,3,4,5,6,7]

这些是随机抽取的数字

luckyNumbers=[35,3,17,26,21,9]

在这种情况下,数字3有一个匹配项。如何检查这一点,以便可以吐出我的2种不同的图形,一个用于不匹配,一个用于匹配?

for ( var i = 0; i < myNumbers.length; i++) {
    for ( var e = 0; e < luckyNumbers.length; e++) {

        if (myNumbers[i] == luckyNumbers[e]){
            matchingPairs.push(myNumbers[i]);
    document.getElementById("ball"+myCounter).src="img/ballCorrect"+myNumbers[i]+".svg";

        }
        else{
        document.getElementById("ball"+myCounter).src="img/ballIncorrect"+luckyNumbers[myCounter-1]+".svg";

        }
          document.getElementById("ball"+myCounter).style.display="inline";
    }
 }
javascript
1个回答
0
投票

下面的代码段将为您提供具有更好性能的所有匹配数字的数组。

const myNumbers=[1,2,3,4,5,6,7]
const luckyNumbers=[35,3,17,26,21,9]

const matching = getMatching(myNumbers, luckyNumbers)

function getMatching(myNum, luckyNum) {
    const luckySet = new Set(luckyNum)
    return myNum.filter(n => luckySet.has(n))
}

PS:我无法理解您对图形所做的确切处理,但是类似于下面的代码片段应该可以解决问题。

const myNumbers=[1,2,3,4,5,6,7]
const luckyNumbers=[35,3,17,26,21,9]

const luckySet = new Set(luckyNum)
myNumbers.forEach(num => {
    if(luckySet.has(num)) {
        // found matching ::render Graphic 1
    } else {
        // Not matching :: render Graphic 2
    }
})

0
投票

您可以获得匹配的球号,然后可以按以下方式进行迭代。

let myNumbers=[1,2,3,4,5,6,7];
let luckyNumbers=[35,3,17,26,21,9];

let commons = myNumbers.filter((element)=>{ return (luckyNumbers.indexOf(element)>-1);})


for (let itr = 0; itr < myNumbers.length; itr++) {


if (commons.include(myNumbers[itr])){
             document.getElementById("ball"+itr).src="img/ballCorrect"+myNumbers[itr]+".svg";

        }
        else{
        document.getElementById("ball"+itr).src="img/ballIncorrect"+luckyNumbers[itr]+".svg";

        }
          document.getElementById("ball"+itr).style.display="inline";

 }
© www.soinside.com 2019 - 2024. All rights reserved.