JavaScript数组&类数组转换

时间:2023-03-09 16:10:58
JavaScript数组&类数组转换

一、数组

在JavaScript中数组可以容纳任何类型的值,可以是数字、字符串、对象、甚至其他数组(多为数组)

var a = [1,'2',[3]];
a.length;//3
a[0];//1
a[2];//[3]
a[2][0];//3

使用delete运算符可以将单元从数组中删除,但是单元删除后,数组的length属性并不会发生变化

    var a = [1,2,'3'];
delete a[0];//返回ture
//此时数组变成[empty,2,'3'];
a[0];//返回undefined;
a.length;//3

稀疏数组:含有空白或空缺单元的数组

 var a = [];
a[0] = 1;
a[2] = [3];
a[1];//undefined
a.length;//3

数组通过数字进行索引,但他们也是对象,所以也可以包含字符串键值和属性(但是并不计算在length数组长度内)

   var a = [];
a[0] = 1;
a['foobar'] = 2;
a.length;//1;
a.foobar ;//2

类数组(一组通过数字索引的值)

有时需要将类数组转换为真正的数组,一般通过工具函数(indexOf()、concat()、forEach()etc)来实现。

例如: 一些DOM查询操作会返回DOM元素列表,它们并非真正意义上的数组,但十分类似。

工具函数slice()经常被用于这类转换:


function foo(){
return Array.prototype.slice.call(arguments);
}
foo('bam','baz','bar');//['bam','baz','bar']

ES6中的内置工具函数Array.from()也能实现这个功能

var arr = Array.from(arguments);