首页 > 代码库 > JavaScript数组与对象的关系
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数组与对象的关系
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。