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

时间:2014-04-03 23:09:45

标签: 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
    [12] = h3ll0

我已经尝试过使用array.splice(id,1,data)但是当我在console.log中索引不匹配的数组时,几乎就好像因为索引在它只是在数组的末尾附加值之前不存在。

所以我想知道如何在任何索引处向数组添加数据,以便我可以创建一个数组,如示例所示

2 个答案:

答案 0 :(得分:13)

信不信由你,你只需要分配它:

var a = []; // Creates array
a[1] = "hi";
a[2] = "more data";
a[4] = "junk data";
a[9] = "hello world";
a[12] = "h3ll0";

这是因为JavaScript aren't really arrays at all中的标准数组,它们只是具有某些特殊行为的对象。数组“条目”只是对象属性。在JavaScript中,如果您分配给尚不存在的对象属性,则会创建它。

如果您计划使用数组功能,则只需要一个数组,例如length(在上面的示例中为13;它总是比最高索引高一个,或者它是如果您直接分配给length,或splice等,则可以给予它的价值。如果您计划使用这些功能,您只需使用一个对象( var a = {};而不是var a = [];)。上面没有任何改变。

答案 1 :(得分:1)

不要以这种方式使用数组 - 如果你在索引9处有一个元素,则指示0-8然后 的值为 {{1当你循环它时,这可能非常令人困惑,特别是如果你试图确定你的数组的长度。

您想要使用的是具有数字键的对象。

undefined