首页 > 解决方案 > 有没有办法循环每个与另一个数组中相同的元素?

问题描述

我对 Javascript 很陌生,所以如果我犯了任何明显的错误,请原谅我。

本质上,我有两个数组,我想为第二个数组中的每个元素循环。到目前为止,我有这个:

if(obtainedCards.some( sp => Boosters.SP.includes(sp)))
{
    obtainedCards.forEach(potential => Boosters.SP.includes(potential))
    {
        // CHANGE THIS BACK TO 0, 100 AFTER TESTING
        this.chance = CardsBetween(76, 100);

        console.log(this.chance);
        if(this.chance >= 76)
        {
            this.noOfSPs += 1;
            console.log("Test: " + this.chance);
        }
    };

    console.log("Chance is: " + this.chance);
    console.log("No of SPs is: " + this.noOfSPs);

   //return chance, 
   return noOfSPs;
}

第一个if语句按预期工作,但forEach没有。它只会执行一次,即使我知道两个数组中都有多个元素。

标签: javascriptarraysforeach

解决方案


您需要首先过滤掉第一个数组中的所有元素,这些元素在第二个数组中不存在。然后过滤器的结果就是您要映射的数组。

const array_1 = [1, 2, 3];
const array_2 = [4, 5, 2];

const getArrayWithSameElements = (arr1, arr2) => {
    return arr1.filter(item => arr2.includes(item));
}

getArrayWithSameElements(array_1, array_2).map(item => console.log(item)) // This will loop through every item in array 1, which is present in array 2

推荐阅读