js数组4F

140 阅读2分钟

JS-find、filter、forEach、map

js这四个方法不会对空数组进行检测,也不会改变原始数组

find()方法主要用来返回数组中符合条件的第一个元素(没有的话,返回undefined)

//语法 array.find(function(value, index, arr),thisValue)

 var Array = [1,2,3,4,5,6,7];
 var result = Array.find(function(value){
     return value > 5;   //条件
 });
 console.log(result);//6
 console.log(Array);//[1,2,3,4,5,6,7]

filter()过滤,筛选,方法主要用来筛选数组中符合条件的所有元素,并且放在一个新数组中,如果没有,返回一个空数组

//语法 array.filter(function(value, index, arr),thisValue)
var Array= [1,2,3,4,5,6,7];
 var result = Array.filter(function(value){
     return value>5;
 });
 console.log(result);//[6,7]
 console.log(Array);//[1,2,3,4,5,6,7]

map()映射,方法主要用来对数组中的元素调用函数进行处理,并且把处理结果放在一个新数组中返回(如果没有返回值,新数组中的每一个元素都为undefined)

//语法 array.map(function(value, index, arr),thisValue)
 var Array = [1,2,3];
 var result =Array.map(function(item){
    return item* 2;
 });
 console.log(result);//[2,4,6]
 console.log(Array);//[1,2,3]

forEach()方法也是用于对数组中的每一个元素执行一次回调函数,但它没有返回值(或者说它的返回值为undefined,即便我们在回调函数中写了return语句,返回值依然为undefined)

注意: 如果forEach里有两个参数,则第一个参数为该集合里的元素,第二个参数为集合的索引; 若只有一个参数则该参数就是遍历数组中的一项; 不能 使用 return false 终止循环 只是终止了本次循环

 var Array = [1,2,3,4,5];
var sum = 0;
var res = Array.forEach(function(item,index){
   sum += item;
});
console.log(res); //undefined     
console.log(Array);//[1,2,3,4,5]
console.log(sum);//15
//一般不写返回值 
Array.forEach(function(value){
   sum += value;
});
console.log(sum) //15

使用场景 高频用途:

map + filter

map遍历排除项,后产生undefind项,使用filter筛选过滤掉undefind(直接用filter不香?)

高频用途:
1.上例中的过滤不符合项;
2.去掉数组中的 空字符串、0undefinednullvar arr = ['1', '2', null, '3.jpg', null, 0]
var newArr = arr.filter(item => item)
// 也可以写成
// var newArr = arr.filter(Boolean);
console.log(newArr) // ["1", "2", "3.jpg"]
3.数组去重;