我们可以使用new Array()
的方式或者字面量的方式创建新的数组。
var a = new Array(1, 2, 3);
var a = [1, 2, 3];
这两种方式都会创建一个[1,2,3]
的数组。这样数组就会自动为其创建索引,并更新 length
值,所以上述创建的数组length
返回的值为3
。
同时,js数组也支持自定义下标的方式,例如
var obj = {
name: 'test'
};
a['custom'] = obj;
这样custom
就相当于数组的一个属性了,与之前的方式不同的是,它不会自动更新length
值,既然不是一个正常的数组索引,那么对于数组的大部分方法对它就不适用了。
var a = [1, 2, 3];
var obj = {
name: 'test'
};
a['custom'] = obj;
console.log(a); //[ 1, 2, 3, custom: { name: 'test' } ]
console.log(a.length); //3
可以看到,新添加的a['custom']
并没有计入length
值。那么对于pop()
,push()
等等这样的方法,也是操作数组的索引的,对于自定义属性,对其就不适用了。
var a = [1, 2, 3];
var obj = {
name: 'test'
};
a['custom'] = obj;
console.log(a.pop()); //3 预期返回obj,结果返回了3
console.log(a); //[ 1, 2, custom: { name: 'test' } ]
console.log(Object.keys(a), a.length); //[ '0', '1', 'custom' ] 2
所以,在使用自定义数组下标值的时候一定要注意数组的这个特性。
如果觉得我的文章对您有用,请您随意打赏。您的支持将鼓励我更加努力创作!
如无特殊声明,文章均为原创,若有不正之处,万望告知。转载请附上原文地址,十分感谢!