【JS】Map、Filter、Reduce、indexOf数组方法

Array.map()
参数:接收两个参数,一个是回调函数,另一个是回调函数的this值(可选)。回调函数接收三个参数,分别是当前值,当前索引和整个数组。

返回:函数返回一个新创建的数组,数组中的每个元素都经过了回调函数的处理,结果不改变原数组。

Array.map() 根据传递的转换函数,更新给定数组中的每个值,并返回一个相同长度的新数组。它接受一个回调函数作为参数,用以执行转换过程。

let newArray = oldArray.map((value, index, array) => {
  ...
});

map方法相当于对数组进行了for循环,map方法会在不改变原始数组的基础上返回一个新的数组

let nums = [1, 2, 3];
let newNums = nums.map(item => {
 item = item +5; 
 return item ; 
});
console.log(newNums,'-------',nums);
打印结果  [6, 7, 8] "-------"  [1, 2, 3]

Array.filter()
参数:接收一个函数参数。函数接收一个默认参数,就是数组正在遍历的当前元素,函数参数的返回值是一个布尔值,若返回true,则数组元素得到保留。

返回:函数返回一个新创建的数组,数组元素为通过函数参数调用返回true的元素,此函数不会改变原数组。

当我们想要过滤数组的值到另一个数组,新数组中的每个值都通过一个特定检查,Array.filter() 这个快捷实用的方法就派上用场了。

类似搜索过滤器,filter 基于传递的参数来过滤出值。

举个例子,假定有个数字数组,想要过滤出大于 10 的值,可以这样写:

let nums = [1, 2, 3, 12, 6, 10, 11, 8]; 
let newNums = nums.filter(item => {
 return item > 10
 });
 console.log(newNums,'-------',nums);
 打印结果  [12, 11] "-------"  [1, 2, 3, 12, 6, 10, 11, 8]

filter方法主要适用于根据某个条件筛选出数组中的元素,与map方法一样filter方法也不会对原始数组进行修改

Array.reduce()
参数:接收两个参数,一个是回调函数,另一个是初始值(可选)。回调函数接收三个参数,分别是积累值、当前值和整个数组。

返回:函数返回一个值,该值由数组中的元素通过回调函数进行处理后积累得到的最终值。

reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。对空数组是不会执行回调函数的。
在这里插入图片描述

let nums = [1, 2, 3, 4]; 
let newNums = nums.reduce((sum, item, index, array)=>{ 
return sum += item
},9);
console.log(newNums,'-------',nums);
 打印结果 19 "-------" (4) [1, 2, 3, 4]

reduce(callback,initiaValue)会传入两个变量,回调函数(callback)和初始值(initiaValue)。
假设函数有个传入参数,prev和next,index和array。 Prev和next是你必须要了解的。
当没有传入初始值时,prev是从数组中第一个元素开始的,next是第二个函数。
但是当传入初始值(initiaValue)后,第一个prev将是initivalValue,next将是数组中的第一个元素。

Array.indexOf()

该方法返回某个元素在数组中的位置

array.indexOf(item,start)

参数:item 必须。查找的元素;start 可选。规定检索的位置,它的合法取值是 0 到stringObject.length - 1。

var nums = [1,2,3];
console.log(nums.indexOf(1));
console.log(nums.indexOf(2));
console.log(nums.indexOf(3));
console.log(nums.indexOf(4));

打印结果 分别为:0、1、2、-1

array.indexOf()主要用于检索数组中收否存在某个元素并返回元素在数组中的位置,若没检索到,则返回 -1。

本人刚刚入坑,上面资料也基本是从网上找到进行学习的,如果有什么不对,望大家多多指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值