Javascript 在不存在的索引处插入数组

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

我试图用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
    [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;

simple
arr[1]=“hi”
有什么问题?不要这样使用数组,而是使用对象。“如果索引9处有一个元素,则表示0-8的值将为
未定义的值。”。这些条目根本不存在。但是,如果尝试检索不存在的对象属性(无论是
x[27]
还是
x.foobar
),检索操作的结果是
未定义。但这与现有的属性不同,它的值
未定义