【问题标题】:reform array with only 1 key [duplicate]只有1个键的改革数组[重复]
【发布时间】:2018-08-08 19:38:31
【问题描述】:

使用来自已知视频游戏的 JSON/数组中的一些数据。我接近创建一个只有本地化名称的新数组,但不能完全正确。我错过了什么:

const endpoint = './heroes-org.json'
let heroes = []
let renamed = []

fetch(endpoint)
  .then(text => text.json())
  .then(data => heroes.push(...data.result.heroes))
  .then(() => {
    for(i = 0; i < heroes.length; i++){
        // renamed += heroes[i].localized_name
        //heroes.map(function){
        //}
        setTimeout(function(){
            console.log(renamed)
        }, 2000)
    }})

map 函数是一种摆脱每个数组元素的不必要键的想法。

另外,如果我只是从 chrome 控制台中控制台日志 heroes 向我显示:

似乎不太对劲。为什么我的数组被分成 0-99 等?

我最终只想得到一个包含所有 115 个英雄名字的数组。

【问题讨论】:

  • 这实际上只是一个数组,chrome 控制台已经为你吐出了它(纯视觉)。它仍将用作单个数组。注意长度属性:115。
  • 别担心。这是镀铬的东西。您的数组很好,但 chrome 将元素分成 100 个部分,因此一次不会有太多信息
  • 为什么关闭了? Chrome 中的重组数组只是原始问题的一个旁白,该问题询问如何将英雄数组重新映射为一个本地化名称数组。诚然,这也已在 SO 上多次回答,但上面提供的链接不是问题的答案。
  • @Helle - 您可以通过以下方式解决数据重新映射问题:renamed.push(heroes[i].localized_name); 在现有循环内 renamed = heroes.map(hero =&gt; hero.localized_name); 而不是循环。
  • @Raith 使用您提供的第一个选项时,我看到控制台吐出 112 条记录,每条记录都表明每个名称都已添加到数组中。所以一旦完成,控制台会显示 112 个数组,其中包含 112 个名称。这是正常的,还是应该在操作完成后只在控制台中显示一个数组? renamed = heroes.map..... 的第二个选项按预期工作,并在完成后向我显示一个数组。谢谢

标签: javascript json ajax ecmascript-6


【解决方案1】:

这只是 Chrome 的一个功能。 Chrome 将数组分解为由 100 个元素组成的较小部分,以便于调试。查看 length 属性,它的值为 115 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 2019-09-13
    • 2012-12-12
    • 2013-09-13
    • 1970-01-01
    • 2015-12-13
    • 2021-02-06
    相关资源
    最近更新 更多