首页 > 解决方案 > 如果未定义,是否设置 js 数组索引

问题描述

我正在编写一个脚本,其中我需要一些基于大量时间戳的数据。

下面只是一个例子

var timestampData1 = [1555486016,1555486017,1555486018...]; 
var timestampData2 = [1555486016,1555486017,1555486018...];

var data = [];
data[1] = [];
$.each(timestampData1,function(index,value) {
    data[1][value] = 1;
});
data[2] = [];
$.each(timestampData2,function(index,value) {
    data[2][value] = 1;
});
console.log(data);

上面的示例将在控制台中输出以下内容

在此处输入图像描述

但是,如果我检查控制台中的数据,我会看到很多从 0 到最后一个时间戳的空集

在此处输入图像描述

所以我的问题是:

javascript会设置所有这些索引,还是只是控制台中的一个指示?如果不是,我想这对性能非常不利,像上面那样做吗?

标签: javascriptjqueryarrays

解决方案


是的,你的假设是正确的。如果您使用具有键/值对的对象,这不会成为问题,但是您将排列方法,如pushfilter

例子:

var timestampData1 = [1555486016,1555486017,1555486018...]; 
var timestampData2 = [1555486016,1555486017,1555486018...];

var data = [];
//Make data[1] an object not array
data[1] = {};
$.each(timestampData1,function(index,value) {
    data[1][value] = 1;
});
//Make data[1] an object not array
data[2] = {};
$.each(timestampData2,function(index,value) {
    data[2][value] = 1;
});
console.log(data);

输出:

在此处输入图像描述


推荐阅读