Javascript 在不存在的索引处插入数组
我试图用javascript格式化一个数组,其中包含从数据库中提取的数据,这样行的ID就是数组的索引,所以数据Javascript 在不存在的索引处插入数组,javascript,arrays,Javascript,Arrays,我试图用javascript格式化一个数组,其中包含从数据库中提取的数据,这样行的ID就是数组的索引,所以数据 ID | Data ---------------------------- 1 | hi 2 | more data 4 | junk data 8 | hello world 12 | h3ll0 看起来像 array: [1] = hi [2] = more data [4] = junk data [9] = hello world
ID | Data
----------------------------
1 | hi
2 | more data
4 | junk data
8 | hello world
12 | h3ll0
看起来像
array:
[1] = hi
[2] = more data
[4] = junk data
[9] = hello world
[12] = h3ll0
我曾尝试使用array.splice(id,1,data)
,但当我对数组进行console.log操作时,索引不匹配,这几乎就像是因为索引在数组末尾追加值之前不存在一样
因此,我想知道如何在任何索引处向数组添加数据,以便创建一个如示例所示的数组
var a = []; // Creates array
a[1] = "hi";
a[2] = "more data";
a[4] = "junk data";
a[9] = "hello world";
a[12] = "h3ll0";
这是因为JavaScript中的标准数组只是具有某些特殊行为的对象。数组“条目”只是对象属性。在JavaScript中,如果您分配给一个还不存在的对象属性,它就会被创建
如果您计划使用数组功能,如
length
(在上面的示例中为13
;它总是比最高索引高一个,或者如果您直接指定length
),或者splice
等,那么您只需要为此使用数组。如果您不打算使用这些功能,您可以只使用对象(var a={};
而不是var a=[];
)。上述内容没有任何变化。不要以这种方式使用数组-如果索引9处有一个元素,则当您在其上循环时,标记0-8将变为未定义的值,这可能会非常混乱,尤其是当您试图确定数组的长度时
您要使用的是一个带有数字键的对象
var x = {};
x.[id] = data;
simplearr[1]=“hi”
有什么问题?不要这样使用数组,而是使用对象。“如果索引9处有一个元素,则表示0-8的值将为未定义的值。”。这些条目根本不存在。但是,如果尝试检索不存在的对象属性(无论是x[27]
还是x.foobar
),检索操作的结果是未定义。但这与现有的属性不同,它的值未定义
。