JavaScript如何定义未定义的空对象长度数组?

时间:2014-02-02 04:52:32

标签: javascript

var array = [];

var object = {};

现在,我需要一个空对象数组。

array[0] = {};
array[1] = {};
//........
//........

var array = [{}];

显然不对。

如何在JS中定义(空)对象数组?

var array = [{},{},{},{},.........];

感谢。

编辑:

我需要的原因与使用具有未定义长度的数组有用,并且在某些情况下在数学上是自然的原因相同。

我需要对象包装器,并且对于初始化,它只是一个空对象,就像某些值在很多情况下为null或未定义。

所以,我会

var object = {};

array[0].value = 'foo', array[1].value = 'bar'.....

但是,我确实需要多个对象包装器,并且数字没有预先确定,所以我需要一个对象数组。

所以,对不起,我修改了我的问题标题

JavaScript如何定义未定义的空对象长度数组?

4 个答案:

答案 0 :(得分:3)

在你的数组中,以任何方式推送对象是对的。那完全没问题。像:

var arr = [];
arr.push({}); // ok
aa[1] = {} // also ok

或:

var arr = [{}, {}, {}]; // the way you are doing is also fine

或者,如果你想通过循环来做,那也没关系。像:

var arr = [];
for(var i=0; i<5; i++){
    arr[i] = {};
}

答案 1 :(得分:1)

一般来说,写作方式

var array = [];
array[0] = {};
array[1] = {};
//........
//........

以理智的方式没有大量的复制粘贴是使用for循环:

var array = [];
for(var i=0; i<10; i++){
  array[i] = {};
}

答案 2 :(得分:1)

数组可以动态增长和缩小。所以从某个角度来看,它们已经是不确定的长度。如果需要,您始终可以向其添加新对象。

您还可以创建一个辅助函数,首先检查某个对象是否存在于某个位置,如果不存在,则创建一个新对象。

您提到了array[2].value = 'foo'作为示例。这是一个你可以使用的辅助函数:

function getObjectAtIndex(arr, index) {
    return arr[index] || (arr[index] = {});
}

然后,不要写array[2].value = 'foo',而是写下:

getObjectAtIndex(array, 2).value = 'foo'

答案 3 :(得分:0)

我很确定像var array = []; 这样的数组是一个对象数组。根据Javascript的工作原理,你永远不必担心空指针异常,所以只需定义数组,就像用空对象初始化它一样,看它是否有效