как вернуть один индексный объект массива (вместо всего массива) - PullRequest
0 голосов
/ 25 июня 2019

Я написал код, который выглядит следующим образом:

state.intro = state.memoryCards[Math.floor(Math.random() * state.memoryCards.length)];

Я не думаю, что это правильный способ изменить состояние, поэтому я рефакторинг кода ниже, но я не уверен, как вернуть один индекс этого массива memoryCards.


 intro: state.memoryCards.find(function(card, index) {
                    const randomIndex = Math.floor(Math.random() * state.memoryCards.length);
                    if(index === randomIndex) {
                        return card
                    }
                })

Ответы [ 2 ]

1 голос
/ 25 июня 2019

Я думаю, что вы имеете в виду

state.memoryCards.find(
    (card, index) => index === Math.floor(
        Math.random() * state.memoryCards.length
    )
).type

(но я не уверен, что понимаю, что вы хотите)

0 голосов
/ 25 июня 2019

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

Map вернет массив такой же длины, как и тот, который просматривался, Find как методвернуть первый элемент, прошедший входной тест для массива.

У вас был правильный разброс по состоянию, так что предыдущее состояние сначала вводится в возвращаемый результат, а затем оно перезаписывает карты памяти новыми, и (Я предполагаю ...) вводит остальные карты памяти, которые находятся в этом объекте, и перезаписывает определенный индекс следующим значением типа

Редактировать: возвращать только одно значение для карт памяти

intro: state.memoryCards.find((card, index) => {
    const randomCard = Math.floor(Math.random() * state.memoryCards.length)
    if(index === randomCard) {
        return {
            ...state,
            memoryCards: card.type
        }
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...