欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

es6之数组遍历的各种方式

程序员文章站 2022-07-16 22:58:28
...

回顾es5中的方法,首先想到的就是最原始的for循环
var arr = [1, 2, 3]
一丶就是for循环

for (let i = 0; i < arr.length; i++) {
  console.log(arr[i]) //输出1,23,
}

for循环中break和continue
1.当使用break的时候就是跳出循环

var arr = [1, 2, 3]
// 第一种,就是for循环

for (let i = 0; i < arr.length; i++) {
  if (arr[i] === 2) {
    break
  }
  console.log(arr[i]) //输出1
}

2.当使用continue的时候,就是跳出当次循环

var arr = [1, 2, 3]
// 第一种,就是for循环

for (let i = 0; i < arr.length; i++) {
  if (arr[i] === 2) {
    continue
  }
  console.log(arr[i]) //输出1,3
}

二丶就是forEach方式,item就是输出的元素,index就是序号,array就是数组本身,forEach如果进行数组本身的操作,它是没有return值得,会直接改变原数组

// 第二种就是forEach方法
arr.forEach(function (item, index, array) {
  console.log(item) //这里会输出0,1,2
})
//当在forEach中使用break或者continue时,程序会报错
arr.forEach(function (item, index, array) {
  if (item === 2) {
    break //报错 Uncaught SyntaxError: Illegal break statement
  }
  console.log(item) //这里会输出0,1,2
})

三,map方法,map方法和forEach方法的区别就在于,map方法可以return出一个新的数组,并且不会改变原来的数组

let result = arr.map(function (val, index) {
  return val += 1
})
console.log(result) //[2, 3, 4]
console.log(arr) // [1, 2, 3]

四丶filter方法,数组的过滤方法,会筛选出符合条件的数组进行返回,也不会改变原数组

let result = arr.filter(function (item) {
  return item > 1
})
console.log(result) //[2, 3]
console.log(arr) //[1, 2, 3]

五丶some方法,得到的是一个Boolean类型的值,只要其中一个满足就会返回true

let result = arr.some(function (item) {
  return item > 1
})
console.log(result) // true
console.log(arr) //[1, 2, 3]

六丶every方法,也是一个Boolean类型的值,必须要全部满足才会返回true

//  every

let result = arr.every(function (item) {
  return item > 1
})
console.log(result) // false
console.log(arr) //[1, 2, 3]

七丶reduce方法,接受函数作为累加器,两个参数,第一个参数为回调函数,第二个参数为自己定义的初始值

// 1.数组求和
let sum = arr.reduce(function (prev, cur, index, array) {
  return prev + cur
}, 0)//这是自己定义初始值

console.log(sum) //6
// 2.数组中取出最大值
let max = arr.reduce(function (prev, cur, index, array) {
  return Math.max(prev, cur)
})

console.log(max) //3
// 3.数组去重
let newArr = [1, 2, 3, 2, 4]
let res = newArr.reduce(function (prev, cur, index, array) {
  prev.indexOf(cur) === -1 && prev.push(cur)
  return prev
}, [])

console.log(res) //[1, 2, 3, 4]

es6新增的数组方法
一丶find():返回第一个通过测试的元素,没有找到则是undefined

let res = arr.find(function (item) {
  return item == 1
})
console.log(res) // 1
console.log(arr) //[1,2,3]

二丶findIndex():返回值为第一个找到的元素的下标,没找到则返回-1

let res = arr.findIndex(function (item) {
  return item == 8
})
console.log(res) // -1
console.log(arr) //[1,2,3]

三丶for of方法遍历数组

for (let i of arr) {
  console.log(i) // 1,2,3
}
//数组的values用法
for (let i of arr.values()) {
  console.log(i) // 1,2,3
}
//数组的values用法
for (let i of arr.keys()) {
  console.log(i) // 0,1,2
}
//数组的中想要key和value,entries()
for (let [i, item] of arr.entries()) {
  console.log(i) // 0,1,2
  console.log(item) //1,2,3
}
相关标签: es6~es11笔记