js Array

328 阅读2分钟

创建数组

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;//

图片1.png

输出:图片2.png

3.栈、队列方法

push,pop 栈;shift,unshift队列

图片3.png

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.数组索引

图片4.png

2.

图片5.png

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