创建数组
1. 字面量
let arr = [1,true,'a'];//数组元素可以是任意数据类型
2. Array构造函数
let arr = new Array();//创建一个空数组
let arr1 = new Array(2);//创建一个长度为2的数组
let arr2 = new Array(1,2);//[1,2]
检测数组
1.instanceof操作符
value instanceof Array
- 在只有一个全局执行上下文使用。如果有多个框架,可能涉及两个不同的全局执行上下文,有两个不同的Array构造函数。若把一个数组从一个框架传给另一个框架,则这个数组的构造函数有别于在第二个框架内本地创建的数组。解决办法:
Array.isArray()(——红宝书第四版)
2. Array.isArray()
Array.isArray(value)
新增元素
1. 修改length属性
let arr = [1,true,'a'];
arr.length = 4;//arr[4]未赋值则为undefined
2. 修改索引号,追加数组元素
arr[5] = 5;//
输出:
3.栈、队列方法
push,pop 栈;shift,unshift队列
3.归并方法:reduce(),reduceRight()
- reduce从第一项开始遍历到最后一项,reduceRight从最后一项遍历至第一项
//参数1(必需):function(pre,cur,index,arr){};//每一项都会调用函数,返回值作为下一次调用该函数 的第一个参数
//pre,归并值,必需
//cur,当前项,必需
//index,当前项索引,可选
//arr,数组本身,可选
//参数2(可选):归并起点值,默认为数组第二项
const numbers = [1,2,3,4];
function getSum(pre, cur,index) {
console.log('pre: ' + pre);
console.log('cur: ' + cur);
console.log("index:" + index);
return pre + cur;
}
let sum = numbers.reduce(getSum,0);//10
let sum1 = numbers.reduce((pre,cur) => pre + cur);//10
其他方法
1.数组索引
2.
ES6 Array的扩展方法
1.构造函数的方法:Array.from()
-(1)将类数组对象(即任何可迭代结构) 或 有一个length属性和可索引元素的结构转换为真正的数组
let arrayLike = {
'0' : 'a',
'1' : 'b',
length : 2,
}
let arr = Array.from(arrayLike);//['a','b']
-(2)Array.from()的可选参数
- 第二个:映射函数参数
- 第三个:指定影射函数参数中this的值,但在箭头函数中不适用
let arr1 = [1,2,3];
let arr2 = Array.from(arr1,x => x**2);//[1,4,9]
let arr3 = Array.from(arr1,function(exponent){return x**this.exponent},{exponent:2});
//[1,4,9]
2.构造函数的方法:Array.of()
把一组参数转换为数组
-用于替代ES6常用的 Array.prototype.slice.call(arguments)
Array.of(undefined);//[undefined]
Array.of(1,2,3);//[1,2,3]
2.实例方法:find(),findIndex(),includes()
(1)find(): 找到第一个符合条件的元素,未找到则返回undefined
let arr = [{
id : 1,
name :"nico"},{
id : 2,
name : lewis
}];
arr.find((item,id) => item.id == 2);
(2)findIndex(): 找到第一个符合条件的元素的索引,未找到则返回-1
- 空数组不执行,不改变数组的值,每个元素都执行一次函数
let arr = [1,2,3];
let index = arr.findIndex((item) => item >2);
(3)includes():数组是否包含某个元素,返回boolean值
[1,2,3].includes(2);//true