JavaScript数组与对象的关系
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript数组与对象的关系相关的知识,希望对你有一定的参考价值。
javascript的数组,相比其他语言,是比较特殊的。数组是Object类型,只不过,有几个比较特殊的地方:
- 有索引下标
- 有默认的length属性
- 是有序的(注意,对象是无序的)
- 可以使用一些特殊的数组方法,比如,forEach, filter, map等等
1 var a = [1,2]; 2 a[‘r‘] = 6; 3 for(var key in a) 4 { 5 console.log(‘key:‘+key + ‘;value:‘ + a[key]); 6 } 7 8 // output 9 key:0;value:1 10 key:1;value:2 11 key:r;value:6
可以看到,如果不指定key值,数组会自动添加默认索引下标值,将其作为key。
这种情况下,length又是如何计算的呢?
1 var a = [1,2]; 2 a[‘r‘] = 6; 3 console.log(a.length); //output: 2 4 5 var b = []; 6 b[0]=1; 7 b[2]=5; 8 console.log(b.length); //output: 3
从上面的代码可以看出,length值是根据最大的索引下标计算的,也就是说,
- 为了改变length的值,必须给数组设置key为number的value;
- length = 最大的number key的值 + 1;
那么,如果在数组上面应用Object的delete方法会怎么样呢?
1 var a = [1,2]; 2 a[‘r‘] = 6; 3 delete a[1]; 4 5 console.log(a.length); // output: 2 6 console.log(a); // output: [1, undefined]
利用delete可以删除数组的元素值,但是,无法删除它的索引下标,所以,数组的length值不会改变。
如果要真正的删除数组元素,必须使用splice函数,如下:
var a = [1,2]; a[‘r‘] = 6; a.splice(1,1); console.log(a); //output: [1]
以上是关于JavaScript数组与对象的关系的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript中Function函数与Object对象的关系
VSCode自定义代码片段12——JavaScript的Promise对象