filter、reduce、map、find、some

filter

参数:过滤函数,返回值为boolean

过滤函数参数:当前值

filter() 方法会创建了一个新的数组,其中包含了旧数组中所有通过某个测试的元素,该方法是以函数形式提供的。为true返回当前项

let nums = [11, 12, 13, 14, 15, 16];
let evenNums = [];
for(var i = 0; i < nums.length; i++) {
    if (nums[i] % 2 === 0) evenNums.push(nums[i]);
}

// evenNums = [12,14,16]


let nums = [11,12,13,14,15,16];
let evenNums = nums.filter(value => value % 2 === 0); 
// evenNums = [12,14,16]

reduce()

四个参数:回调方法、初始值、当前索引、原数组

回调函数参数:accumulator累加器、current当前元素,返回值作为下一次累加器

arr.reduce((累加器,循环元素)=>累加器+循环元素,初始值)

reduce方法是一个数组的迭代方法,和mapfilter不同,reduce方法可缓存一个变量,迭代时我们可以操作这个变量,然后返回它。

// 累加
[1, 2, 3, 4, 5, 6, 7, 8].reduce((a, i) => a + i);
// 输出:36

// 累加,默认一个初始值
[1, 2, 3, 4, 5, 6, 7, 8].reduce((a, i) => a + i, 5);
// 输出:41

// 累乘
[1, 2, 3, 4, 5, 6, 7, 8].reduce((a, i) => a * i);
// 输出:40320

map

  • map() 方法返回一个新数组,新数组中的元素为原始数组中的每个元素调用函数处理后得到的值。第二个参数则为一个对象,可以更改this,默认情况下是window,可以省略

  • 函数接受三个参数,当前项,索引,原数组

  • map() 方法按照原始数组元素顺序依次处理元素。

let nums = [1, 3, 5, 7, 9, 11];
let flag1 = null;
let flag2 = null;
// 自定义对象
let obj = {
   name: "TomHe",
   age:20,
   say: function () {
      console.log("hello");
   }
};

// map接收一个参数时
let res1 = nums.map(function (value) {
   flag1 = this;
   return value+1;
});
console.log(flag1);	  //window
console.log(res1);	  //[2,4,6,8,10,12]


// map接收两个参数时
let res2 = nums.map(function (value) {
    flag2 = this;
   return value-1;
}, obj);

console.log(flag2);  //obj...
console.log(res2);   //[0,2,4,6,8,10]

find

定义和用法 : find() 方法返回通过测试(函数内判断)的数组的第一个元素的值。

find() 方法为数组中的每个元素都调用一次函数执行:

当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。 如果没有符合条件的元素返回 undefined

注意: find() 对于空数组,函数是不会执行的。

注意: find() 并没有改变数组的原始值。

some

定义和用法:some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。

some() 方法会依次执行数组的每个元素:

如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。

如果没有满足条件的元素,则返回false。

注意: some() 不会对空数组进行检测。

注意: some() 不会改变原始数组。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值