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如何定义未定义的空对象长度数组?
答案 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的工作原理,你永远不必担心空指针异常,所以只需定义数组,就像用空对象初始化它一样,看它是否有效