js数组的下标问题
我们可以使用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
所以,在使用自定义数组下标值的时候一定要注意数组的这个特性。
如果您觉得本文对您有用,欢迎捐赠或留言~
- 本博客所有文章除特别声明外,均可转载和分享,转载请注明出处!
- 本文地址:https://www.leevii.com/?p=1000