ES6数组的其他操作arr.find(),arr.findIndex(),arr.fill() ,arr.includes()等等
1.arr.find():查找出第一个符合条件的数组成员,并返回该成员,如果没有找到就返回undefine
let arr = [23,40,50]
let res = arr.find((val,index,arr)=>{
return val >30
})
console.log(res) //返回:40
2.arr.findIndex() :找到的是位置,找不到返回 -1
let arr = [23,40,50]
let res = arr.findIndex((val,index,arr)=>{
return val >30
})
console.log(res) //返回:1
3.arr.fill() 填充
接受两个参数:
arr.fill(填充的东西,开始位置,结束位置)
let arr = new Array(4)
arr.fill('默认值')
console.log(arr)//['默认值','默认值','默认值','默认值']
arr.fill('默认值',1,2)
console.log(arr)//[empty,'默认值','默认值',empty]
//标准用法arr.fill(value)
arr.fill(value, start)
arr.fill(value, start, end)
//例子
[1, 2, 3].fill(4) // [4, 4, 4]
[1, 2, 3].fill(4, 1)// [1, 4, 4]
[1, 2, 3].fill(4, 1, 2)// [1, 4, 3]
4.arr.includes().数组是都包含某个元素,包含返回true,不包含返回false
let arr = ['a','b','c']
let b = arr.includes('b')
console.log(b) //true
forEach()
forEach是ES5新增的方法,有三个返回值
var arr = [6,2,5,4,2];
arr.forEach(function(correntvalue,index,array){
// console.log(correntvalue); //correntvalue是当前项
// console.log(index); //index是当前项的索引
// console.log(array); //array是调用forEach的数组 }
)
第一个返回值是当前项 correntvalue
console.log(correntvalue)
第二个返回值是当前项的索引 index
console.log(index)
第三个返回值是调用forEach的数组 array
console.log(array)
filter
是一个常用的操作,它用于把Array
的某些元素过滤掉,然后返回剩下的元素。
和map()
类似,Array
的filter()
也接收一个函数。和map()
不同的是,filter()
把传入的函数依次作用于每个元素,然后根据返回值是true
还是false
决定保留还是丢弃该元素。
例如,在一个Array
中,删掉偶数,只保留奇数,可以这么写:
var arr = [1, 2, 4, 5, 6, 9, 10, 15];
var r = arr.filter(function (x) {
return x % 2 !== 0;
});
r; // [1, 5, 9, 15]
把一个Array
中的空字符串删掉,可以这么写:
var arr = ['A', '', 'B', null, undefined, 'C', ' '];
var r = arr.filter(function (s) {
return s && s.trim(); // 注意:IE9以下的版本没有trim()方法
});
r; // ['A', 'B', 'C']
可见用filter()
这个高阶函数,关键在于正确实现一个“筛选”函数。
filter()
接收的回调函数,其实可以有多个参数。通常我们仅使用第一个参数,表示Array
的某个元素。回调函数还可以接收另外两个参数,表示元素的位置和数组本身:
var arr = ['A', 'B', 'C'];
var r = arr.filter(function (element, index, self) {
console.log(element); // 依次打印'A', 'B', 'C'
console.log(index); // 依次打印0, 1, 2
console.log(self); // self就是变量arr
return true;
});
利用filter
,可以巧妙地去除Array
的重复元素:
'use strict';
var
r,
arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];
r = arr.filter(function (element, index, self) {
return self.indexOf(element) === index;
});
console.log(r.toString());
运行结果:apple,strawberry,banana,pear,orange
去除重复元素依靠的是indexOf
总是返回第一个元素的位置,后续的重复元素位置与indexOf
返回的位置不相等,因此被filter
滤掉了。
map()
https://blog.csdn.net/weixin_41646716/article/details/91509295
let arr = [1, 2, 3]
let newArr = arr.map((item, i, arr) => {
//item:遍历数组的每一项,i:数组当前项的下标,arr原数组
console.log(`item---${item}, i---${i}, arr---${arr}`)
return
})
console.log(newArr) //[undefined, undefined, undefined]
下一篇: Spark提交代码的两种方式