JavaScript数组
数组是值的有序集合。每个值叫做一个元素。代表元素在数组中位置的数字称为索引。
数组实际上是特殊的对象,数组的索引是对象的属性名,数组会自动维护小于232 的非负整数作为属性名时的length属性值
创建数组
数组直接量创建
var empty = []; //创建一个空的数组
var empty = [5,4,3,2,1]; //创建一个数组
var empty = [1, ,3]; //中间的省略元素将被赋予undefined
var empty = [ , , , ]; //这里数组长度是3并非4,并且3个元素都是undefined,因为数组直接量的语法会自动省略最后一个逗号后面为空的元素
使用构造函数Array()创建
var empty = new Array();
var empty = new Array(10); //创建一个长度为10的数组
var empty = new Array(5,4,3,2,1); //创建一个数组,等同于var empty = [5,4,3,2,1]
证明数组是特殊的对象
<script>
var b = [1, 2, 3, 4, 5];
b[-123] = 112;
b['test'] = 321
console.log(b);
console.log('b.length =' + b.length);
</script>
数组常用方法
1.join( ) => 将数组元素转换为字符串并拼接
var a = [1,2,3];
a.join(); => “1,2,3”
a.join(’’);=> “123”
2.sort( ) => 将数组中的元素排序(原数组被改变)
当sort()函数中无参时,将根据元素首字母进行排序
var a = [3,4,1];
a.sort(); => [1,3,4]
3.reverse( ) => 将数组元素逆序(原数组被改变)
var a = [1,2,3];
a.reverse() => [3,2,1]
4.length => 查看数组元素长度
var a = [1,2,3,4];
a.length => 4
a.length = 3 => a=[1,2,3]
5.delete =>删除数组中索引对应的元素(原数组被改变)
删除数组中索引对应的元素,但数组长度保持不变,所以会将数组变成稀疏数组
var a = [1,2,3,4];
delete a[2] => a=[1,2,4]
6.concat( ) => 创建并返回一个新数组
a = [1,2,3];
var b = a.concat(1,2); => b = [1,2,3,1,2]
7.slice( ) => 返回指定子数组
slice(开始索引(正数从左计算,负数从右计算),结束索引(正数从左计算,负数从右计算))
var a = [1,2,3,4,5];
var b = a.slice(0,3) => b= [1,2,3]
var b = a.slice(-3) => b=[3,4,5]
8.splice( ) => 在数组中插入和删除元素(原数组被改变)
var a = [1,2,3,4,5,6,7,8];
var b = a.splice(4); => a = [1,2,3,4] b = [5,6,7,8]
a.splice(1,3) => a = [2,3,4]
a.splice(2,0,‘a’)=>a=[1,2,a,3,4,5,6,7,8]
9.push( ) => 在数组尾部添加元素(原数组改变)
var a = [1,2,3];
a.push(1,2) => a=[1,2,3,1,2]
10.pop( ) => 删除元素尾部的元素(原数组改变)
var a = [1,2,3];
a.pop(); => a = [1,2]
11.unshift( ) => 在数组头部添加元素(原数组改变)
与push相仿
12.shift( ) => 删除数组头部元素(原数组改变)
与pop相仿
13.toString() => 将数组中的所有元素转化为一个字符串
[1,2,3].toString() => “1,2,3”
14.forEach() => 遍历数组,为每个元素调用指定函数
var a = [1,2,3];
var sum = 0;
a.forEach(value => sum += value); => sum=6
15.map( ) => 遍历数组,为每个元素调用指定函数,并返还一个值
var a = [1,2,3];
var b = a.map(value => value+1) => b=[2,3,4]
16.filter( ) => 遍历数组,并通过传递的函数条件来筛选并返回一个新的子集
var a = [1,2,3];
var b = a.filter(x => x>2); => b = [3]
17.every( ) => 遍历数组,当数组中所有的元素都满足判定条件时返回true,当遇到不满足条件时就返回false并停止遍历
var a = [1,2,3];
var b = a.every(value => value>2); => b = false
var c = a,every(value => value>0); => c = true
18.some( ) => 遍历数组,当数组中有元素满足条件时,就返回true,并停止遍历,与every()相反
19.reduce( ) => 使用指定函数将数组元素进行组合,生成单个值,第一个参数是,第二个参数是一个可选值,用于函数的初始值
var a = [1,2,3];
var sum = a.reduce((x,y) => x+y,0); => sum = 6
20.reduceRight => 与reduce()一样,不过从右向左执行
21.indexOf( ) => 从左到右查找数组中元素索引,没有返回-1
var a = [1,1];
a.indexOf(1) => 0
22.lastIndexOf() => 从右到左查找数组中元素索引,没有返回-1
var a = [1,1];
a.lastIndexOf(1) =>1