Есть ли способ l oop для каждого элемента, такого же, как в другом массиве? - PullRequest
0 голосов
/ 27 мая 2020

Я новичок в Javascript, так что простите меня, если я сделаю очевидные ошибки.

По сути, у меня есть два массива, и я хочу oop для каждого элемента, который также находится в второй массив. Пока что у меня есть это:

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 - нет. Он будет выполнен только один раз, хотя я знаю, что в обоих массивах есть несколько элементов.

1 Ответ

1 голос
/ 27 мая 2020

Сначала вам нужно отфильтровать все элементы в первом массиве, которых нет во втором массиве. И затем результат фильтра - это массив, который вы sh отображаете.

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
...