这两种在JavaScript中创建数组列表的方式有什么区别?

时间:2018-06-28 22:43:26

标签: javascript arrays multidimensional-array

如何动态创建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的回答帮助我解决了这个问题;但是,在某种程度上,问题尚未得到解决,因为卷数组仅在该提取函数中可用。在代码的后面,数据仍然存在,但是单个元素的测试结果为未定义...

3 个答案:

答案 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,我的工作正常。只要我在获取代码中使用该卷数组 ,就可以使用该代码。除此之外,卷阵列仍包含数据,但各个元素未定义。非常感谢所有在这里发布的人!