数组可以容纳任何类型的值,且不需要预先设定大小.
使用delete删除项目数组的length不会发生改变.就变成了稀疏数组.
var array = [0,1,2];
delete array[1];
array;//[0, 空, 2]
array.length;//3
稀疏数组(sparse array), 即含有空白或空缺单元的数组
也就是说数组中的’空’元素,不会影响数组的长度.
访问空元素,会返回undefined,但这与直接赋值为undefined有所区别.TODO…
var array = [];
array[0] = 1;
array[2] = 2;
array[1];//undefined
array.length;//3
数组也是对象,可以添加字符串属性,但是不计算长度
var array = [0,1,2];
array['footer'] = 'footer';
array.length;//3
但是如果字符串属性可以被转换成十进制数字的话,会被当作数组索引.
var array = [0,1,2];
array['3'] = '3';
array;//[0, 1, 2, "3"]
类数组对象
一些dom操作会返回dom元素(NodeList)列表以及函数的参数,他们属于类数组,没有数组的方法
:::info
数组的原型链
myArray —> Array.prototype —> Object.prototype —> null
:::
:::info
NodeList 的原型链
myNodeList —> NodeList.prototype —> Object.prototype —> null
:::
转换成数组
function foo(){
//slice()返回参数列表的一个数组复本
var array = Array.prototype.slice.call(arguments);
array.push('item');
console.log(array);//[1, 2, "item"]
}
foo(1,2)
function doo(){
var array = Array.from(arguments);
array.push('item');
console.log(array);//[1,2,'item']
}
doo(1,2)