[英]What is the difference between these 2 ways of creating a list of arrays in JavaScript?
如何在JavaScript中动态创建数组列表,实际上在Developer Console中显示为数组列表?
只是改写了这个问题; 有很多例子如何做到这一点,我的代码正在运行,但我从这两种方法得到2个非常不同的结果:
我试过这个:
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(卷)导致:(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的答案帮助我解决了这个问题; 但是在某种程度上问题仍然没有得到解答,因为卷数组只能在该获取功能中使用。 稍后在代码中,数据仍然存在,但是单个元素测试为未定义的...
假设变量json
的结构符合您的预期,那应该可以正常工作。 你也可以尝试:
let volume = json.map((i) => [i.json_date, i.volume]);
(假设您的环境允许您使用ES6。)
您可以使用map
函数迭代数组的内容,而不是手动循环遍历数组。
由于对象没有length
值,因此JSON对象的length
将是undefined
。 您可以使用Object.keys
来获取大小,但由于索引无法访问对象值,因此这对您没有多大好处:
var volume = [];
for (i = 0; i < Object.keys(json).length; i++) {
// can't access using json[i] here
}
但是,您可以使用Object.keys(json)
或Object.values(json)
并执行以下操作:( 您需要在json回调中包含代码)
let volume = [];
fetch('/api/foo/bar').then((data) => {
return data.json();
}).then((json) => {
console.log(json);
Object.keys(json).forEach((obj) => {
// obj = {"json_date": 1313964000000, "volume": 23.17, ...}
console.log(obj);
volume.push(new Array(obj["json_date"], obj["volume"]));
});
console.log(volume);
}).catch((e) => {
console.error('There was a problem with the request');
})
感谢oknawe,我得到了它的工作。 使用该代码的工作,提供我用取出码内部的容积阵列。 除此之外,卷阵列仍包含数据,但未定义各个元素。 非常感谢发布在这里的所有人!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.