Javascript: группировать несколько отдельных массивов в один - PullRequest
0 голосов
/ 12 марта 2020

У меня есть этот вызов, который возвратил ответ, подобный этому:

 let pokemonTypes = pokemonData.map((pokemon, i) =>
   {
   let singleType = pokemon.type;
     console.log(singleType);
   }
  );

enter image description here

Обратите внимание, что массивы являются ПОЛНОСТЬЮ отдельными и не имеют каких-либо родительский массив или обертка объекта.

Как я могу получить эти массивы и обернуть их в один или даже лучше объединить все их значения в один массив, как в:

["fire", "grass", "water", "fire", "grass", "flying"]

Ответы [ 3 ]

1 голос
/ 12 марта 2020

Помогает ли это?

const pokemonData = [{ type: ['Fire'] }, { type: ['Grass', 'Poison'] }]
const types = pokemonData.reduce((acc, {type}) => (acc.push(...type), acc), [])
console.log(types) // [ "Fire", "Grass", "Poison" ]
1 голос
/ 12 марта 2020

Альтернативный способ приблизиться к этому, используя функцию и reduce

const first = ['bird', 'tiger'];
const second = ['bird'];
const third = ['lion'];
const fourth = ['tiger', 'duck'];

const myFunc = (...args) => {
    return args.reduce((prev, item) => {
        return [...prev, ...item];
    }, [])
}

const result = myFunc(first, second, third, fourth)
console.log(result)
// ["bird", "tiger", "bird", "lion", "tiger", "duck"]

https://jsbin.com/picutod/1/edit?js, консоль

0 голосов
/ 12 марта 2020

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

let allPokemonTypes = [];

function onNewPokemonType(pokemonTypes) {
    console.log(pokemonTypes);
    allPokemonTypes = [...allPokemonTypes, ...pokemonTypes];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...