数组的无数种方法(二)

150 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情

数组的遍历

indexOf方法,顺序检索数组是否有某个值

  1. 要搜索的值(必传)
  2. 检索的起始位置(非必传)
  3. 返回值是检索出来的下标,没查找到返回-1
var arr = [1,2,3,4]
arr.indexOf(2) // 1
arr.indexOf(10) // -1

lastIndexOf()方法,逆序检索数组是否有某个值

  1. 要搜索的值(必传)
  2. 检索的起始位置(非必传)
  3. 返回值是检索出来的下标,没查找到返回-1
var arr = [1,2,3,4]
arr.lastIndexOf(2) // 1
arr.lastIndexOf(10) // -1

forEach()方法,遍历数组。

  1. 接收一个回调函数,回调函数参数3个element:当前元素值, index:当前元素下标, arr:原数组。那些已删除或者未初始化的项将被跳过,
  2. thisArg:可选可选参数。当执行回调函数callback时,用作this的值。
  3. 它总是返回 undefined 值。不会改变原数组。
var arr = [1,2,3,4]
arr.forEach((element,index,array)=>{
  console.log(element,index)
}) // 1 0 ,2 1 , 3 2, 4 3

map()方法创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。

  1. 接收一个回调函数,回调函数参数3个element:当前元素值, index:当前元素下标, arr:原数组。那些已删除或者未初始化的项将被跳过,
  2. thisArg:可选可选参数。当执行回调函数callback时,用作this的值。
  3. 它会返回一个由原数组每个元素执行回调函数的结果组成的新数组。不会改变原数组。
var array1 = [1, 4, 9, 16];
var map1 = array1.map(function(x){
  return x * 2
}); // map1 = [2, 8, 18, 32]

reduce()方法对数组中的每个元素按序执行一个由您提供的reducer函数,每一次运行 reducer会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。reduce()方法接收两个参数:reducer函数和initialValue,返回值:使用reducer回调函数遍历整个数组后的结果。

reducer函数接收四个函数:

  1. previousValue:上一次调用 callbackFn 时的返回值。在第一次调用时,若指定了初始值initialValue,其值则为initialValue,否则为数组索引为 0 的元素 array[0]。
  2. currentValue:数组中正在处理的元素。在第一次调用时,若指定了初始值initialValue,其值则为数组索引为 0 的元素array[0],否则为array[1]。
  3. currentIndex:数组中正在处理的元素的索引。
  4. array:便利的数组
var array1 = [1, 4, 9, 16];
let sum = array1.reduce(function(pre,cur){
  return pre + cur
},0) // sum = 30