【问题标题】:Javascript: Group Multiple Separate Arrays into OneJavascript:将多个单独的数组组合为一个
【发布时间】:2020-06-23 22:44:26
【问题描述】:

我的这个调用返回了这样的响应:

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

请注意,数组是完全独立的,没有任何父数组或对象包装器。

我怎样才能抓取这些数组并将它们包装成一个甚至更好地将它们的所有值连接到一个数组中,如下所示:

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

【问题讨论】:

  • @ASDFGerte 不,那是不同的。这些是完全独立的数组...
  • @customcommander 通过对象映射后返回的响应实际上是Json格式,除了数组都是分开的,因为它们都来自不同的对象
  • @customcommander 请检查控制台截图中的确切响应...
  • @Zeusox 在我看来,您确实引用了这些数组;他们只是生活在不同的命名空间下。所以你可以使用Array#concat 例如

标签: javascript reactjs ecmascript-6


【解决方案1】:

使用函数和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,console

【讨论】:

  • 请这些是完全独立的数组,因为我什至无法用它们的索引来抓取它们...
  • @Zeusox 这没有任何意义...自撰写此答案以来,您还对问题进行了重大更新。
【解决方案2】:

你必须在拿到它们时抓住它们。

let allPokemonTypes = [];

function onNewPokemonType(pokemonTypes) {
    console.log(pokemonTypes);
    allPokemonTypes = [...allPokemonTypes, ...pokemonTypes];
}

【讨论】:

  • 您能详细说明一下吗?
  • 这个函数只代表当你得到你的口袋妖怪类型时应该发生什么。当你得到一个新的时,你可以将元素添加到一个数组中。这样你就可以把它们放在一起
【解决方案3】:

这有帮助吗?

const pokemonData = [{ type: ['Fire'] }, { type: ['Grass', 'Poison'] }]
const types = pokemonData.reduce((acc, {type}) => (acc.push(...type), acc), [])
console.log(types) // [ "Fire", "Grass", "Poison" ]

【讨论】:

    猜你喜欢
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    相关资源
    最近更新 更多