如何动态创建JavaScript数组列表,该列表实际上在开发者控制台中显示为数组列表?
只是改写了这个问题;有很多示例如何执行此操作,并且我的代码正在运行,但是从这两种方法中我得到了两种截然不同的结果:
我尝试过:
var volume = [];
for (i = 0; i < json.length; i++) {
var item = new Array(2);
item[0] = json[i].json_date;
item[1] = json[i].volume;
volume.push(item);
}
因此,此代码有效,并且似乎创建了一个数组数组,但是在开发人员控制台中,console.log(typeof volume [0])的结果是不确定的。
如果我手动创建数组,则效果会更好:
var volume = [
[1313964000000,23.17],
[1314050400000,23.78],
[1314741600000,25.24],
[1314828000000,24.77],
[1440021600000,82.69]
];
现在console.log(typeof volume [0])是对象。 console.log(volume)结果为:(5)[Array(2),Array(2),Array(2),Array(2),Array(2)]。这就是我需要的,而不仅仅是[]。
我整天都在寻找答案,并且尝试了这段代码的许多变体,但似乎找不到能够动态创建该卷数组以正确显示为数组数组的代码。
还有其他人遇到吗?
这是完整的代码:
var volume = [];
fetch("http://localhost:3000/api/v1/TSLA").then(function(response) {
if(response.ok) {
response.json().then(function(json) {
for (i = 0; i < Object.keys(json).length; i++){
volume.push(new Array(json[i].json_date, json[i].volume));
}
});
} else {
console.log('Network request failed with response ' +
response.status + ': ' + response.statusText);
}
});
console.log(volume);
因此,oknawe的回答帮助我解决了这个问题;但是,在某种程度上,问题尚未得到解决,因为卷数组仅在该提取函数中可用。在代码的后面,数据仍然存在,但是单个元素的测试结果为未定义...
答案 0 :(得分:3)
假设变量json
的结构符合您的预期,这应该可以正常工作。您也可以尝试:
let volume = json.map((i) => [i.json_date, i.volume]);
(只要您的环境允许您使用ES6。)
您可以使用map
函数遍历数组的内容,而不必手动遍历数组。
答案 1 :(得分:1)
由于对象没有# ...
player_vida += cura
player_vida = min(500, player_vida)
值,因此JSON对象的length
将为undefined
。您可以使用length
来获取大小,但是这样做对您没有多大帮助,因为无法通过索引访问对象值:
Object.keys
但是,您可以使用var volume = [];
for (i = 0; i < Object.keys(json).length; i++) {
// can't access using json[i] here
}
或Object.keys(json)
并执行以下操作:
(您需要在json回调中包含代码)
Object.values(json)
答案 2 :(得分:0)
感谢oknawe,我的工作正常。只要我在获取代码中使用该卷数组 ,就可以使用该代码。除此之外,卷阵列仍包含数据,但各个元素未定义。非常感谢所有在这里发布的人!