【发布时间】: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 => hero.localized_name);而不是循环。 -
@Raith 使用您提供的第一个选项时,我看到控制台吐出 112 条记录,每条记录都表明每个名称都已添加到数组中。所以一旦完成,控制台会显示 112 个数组,其中包含 112 个名称。这是正常的,还是应该在操作完成后只在控制台中显示一个数组?
renamed = heroes.map.....的第二个选项按预期工作,并在完成后向我显示一个数组。谢谢
标签: javascript json ajax ecmascript-6