ES5中新增的数组api

本文都是相对简单的API调用。

一、迭代方法

API 参数 作用 返回值 备注
forEach func(v,i,arr) 对数组中的每一项进行操作 没有返回值
map func(v,i,arr) 对数组中的每一项进行操作,
将结果组成新数组
新数组
filter func(v,i,arr) 筛选出符合条件的值,
每个值只出现一次,
将结果组成新数组
新数组
some func(v,i,arr) 判断是否有符合条件的值 true/false 一真即真
every func(v,i,arr) 判断是否所有值都符合条件 true/false 一假即假

示例代码:

//首先创建一个不错的数组
let arr = [2, 8, 4, 6, 9, 2, 7, 3, 1, 5, 1, 8]

//  map  遍历

let mapArr = arr.map((v, i, arr) => {
  return arr[i] = v * 2
})
console.log(mapArr) // map有返回值 [ 4, 16, 8, 12, 18, 4, 14, 6, 2, 10, 2, 16 ]

//  some  判断有没有符合条件的值

let someRes = arr.some((v, i, arr) => {
  return v > 5
})
console.log(someRes) //  true

// every  判断是否所有值都符合条件

let everyRes = arr.every((v, i, arr) => {
  return v > 5
})
console.log(everyRes) //  false

// filter  数组筛选

let arrFilter1 = arr.filter((v, i, arr) => {
  return v > 5;
})
console.log(arrFilter1) //  [ 16, 8, 12, 18, 14, 6, 10, 16 ]

//  filter  数组去重(小技巧)

let arrFilter2 = arr.filter((v, i, arr) => {
  return arr.indexOf(v) === i;
})

console.log(arrFilter2) //  [ 4, 16, 8, 12, 18, 14, 6, 2, 10 ]

//  forEach  遍历数组

let forEachArr = arr.forEach((v, i, arr) => {
  return arr[i] = v * 2;
})


console.log(forEachArr) //  forEach  没有返回值  undefined
console.log(arr)        //  [ 8, 32, 16, 24, 36, 8, 28, 12, 4, 20, 4, 32 ]

二、归并方法

API 参数 作用 返回值 备注
reduce func(prev,current,i,arr),num 链接数组 新数组
reduceRight func(prev,current,i,arr),num 反着链接数组 新数组

示例代码:

// 首先创建一个比较规则的数组
let arr = [1, 2, 3, 4, 5]

let sum1 = arr.reduce((prev, current, i, arr) => {
  console.log(prev);  // 1 3 6 10   打印4次,因为当 i == 0 时,prev还没有存在
  return prev + current
})

console.log(sum1)  // 15


let sum2 = arr.reduce((prev, current, i, arr) => {
  console.log(prev);  // 2 3 5 8 12  打印5次
  return prev + current
},2)

console.log(sum2)  // 17

//如果传了第二个参数,则会将其当作 i == 0 时的prev

三、索引方法

API 参数 作用 返回值 备注
indexOf() v,i 查找从第i项开始,第n个等于v的值 n 从0开始数
如果没有返回-1
lastIndexOf() v,i 同上,但从数组的最后往前查找 n 同上

示例代码

// 新建一个比较规则的数组
let arr = [1, 2, 3, 4, 5]

let sum1 = arr.reduce((prev, current, i, arr) => {
  console.log(prev);  // 1 3 6 10   打印4次
  return prev + current
})

console.log(sum1)  // 15


let sum2 = arr.reduce((prev, current, i, arr) => {
  console.log(prev);  // 2 3 5 8 12  打印5次
  return prev + current
},2)

console.log(sum2)  // 17

你可能感兴趣的:(ES5中新增的数组api)