总结一下数组常用的方法

想到啥写啥,如果有遗漏或者错误的地方,欢迎私聊探讨!

Array.prototype  供数组实例调用,用法:arr.xxx()

1. push() 可向数组的末尾添加一个或多个元素,并返回新的长度。

2. shift() 删除并返回数组的第一个元素。

3. unshift() 向数组的开头添加一个或更多元素,并返回新的长度。

4. splice() 从数组中添加或删除元素。

5. slice() 选取数组的一部分,并返回一个新数组。

6. pop() 删除数组的最后一个元素并返回删除的元素。

7. concat() 连接两个或更多的数组,并返回结果。

8. indexOf()  搜索数组中的元素,并返回它所在的位置。

9. lastIndexOf() 搜索数组中的元素,并返回它最后出现的位置。

10. includes() 【es6】 判断一个数组是否包含一个指定的值。

11. join()  把数组的所有元素放入一个字符串。

12. sort()  对数组的元素进行排序。

用法:sort((a,b)=>a-b)

13. toString()  把数组转换为字符串,并返回结果。

14. reverse() 反转数组的元素顺序。

15. forEach()(迭代) 数组每个元素都执行一次回调函数。

let data = [0, 3, 5, 2, 6, 7, 8];
let arr = data.forEach((item,index) => {
    return "111";
    })
console.log(arr) // undefined

16. map()(迭代) 通过指定函数处理数组的每个元素,并返回处理后的数组。

map 支持返回值;forEach不支持返回值。map 通过回调函数返回值 替换其中某个值,原始数组不变,以新数组返回

let data = [0, 3, 5, 2, 6, 7, 8];
let arr = data.map((item,index) => {
    return ++item;
    })
console.log(arr) // [1, 4, 6, 3, 7, 8, 9]

17. filter()(迭代)检测数值元素,并返回符合条件所有元素的数组。

filter:依次迭代数组中的每一项,每次迭代都把回调函数执行。检测回调函数执行的返回值,如果返回的是true,那么这一项就被筛选到了;返回的是false,则把这一项过滤掉,原始数组不变,以新数组形式返回;如果没有任何符合条件的项,最后则返回空数组。

let data = [0, 3, 5, 2, 6, 7, 8];
let arr = data.filter(item => {
    return item > 2; // 条件:只要每一项大于2的
    })
console.log(arr) // [3, 5, 6, 7, 8]

18. find() (迭代)返回符合传入测试(函数)条件的数组元素。

// 与filter不同的是,find只筛选出第一个符合条件的值;如果一项都没有,则返回undefined
let data = [0, 3, 5, 2, 6, 7, 8];
let arr = data.find(item => {
    return item > 2;
    })
console.log(arr) // 3

19. findIndex() (迭代)返回符合传入测试(函数)条件的数组元素索引。

20. some() (迭代)检测数组元素中是否有元素符合指定条件,只要有一项符合条件,结果就是true

21. every() (迭代)检测数组的每个元素是否都符合条件,所有项都必须符合条件,结果才是true

22. reduce()(迭代)将数组元素计算为一个值(从左到右)

// reduce:依次迭代数据中的每一项,并且可以累积每一次处理的结果
let arr = [2, 3, 4, 5];

求和方式一:
let sum1 = arr.reduce((result, item, index)=>{
    // 循环第一轮:result=2 (获取数组第一项) item=3,index=1 (从数组第二项开始迭代) 得到5
    // 循环第二轮:result=5 (获取上一次回调函数处理的结果) item=4,index=2 得到9
    // 循环第三轮:result=9 item=5,index=3 得到14
    return result + item
});
console.log(sum1) // 14

求和方式二:
let sum2 = arr.reduce((result, item, index)=>{
    // 循环第一次 result=10,item=2,index=0  result设置了初始值,数组从第一项开始迭代
    // ...
    return result + item
},10);
console.log(sum2) // 24


23. reduceRight() (迭代)将数组元素计算为一个值(从右到左)

24. fill(value[,start[,end]]) 填充数组(不传递索引,每一项都填充为value; 设置索引,只把找到的索引项内容进行填充)【es6】

25. flat(数字 / Infinity)数组扁平化 【es6】【不兼容IE】

let arr = [1, [2, [3, [4, 5]]]] // 这是个四维数组
arr = arr.flat(2) // 传2 降2维度
console.log(arr) // [1, 2, 3, [4, 5]]

arr1 = arr.flat(Infinity) // Infinity 无穷大
console.log(arr1) // [1, 2, 3, 4, 5]

Array 静态私有属性方法,用法:Array.xxx()

1. isArray() 判断对象是否为数组 【es5】

2. form() 通过给定的对象中创建一个数组。

把类数组(或者Set)转换为数组【es6】

3. of() 创建新数组,并为其准备数组中的内容【es6】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值