数组遍历的几种方法(二)

145 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

1.filter(ES6)遍历数组,过滤出符合条件的元素并返回一个新数组

var arr = [
    { id: 1, name: '小明', done: true },
    { id: 2, name: '小华', done: true },
    { id: 3, name: '小红', done: false }
]
    
var newArr = arr.filter(function (item, index) {
    return item.done
})

console.log(newArr)

// [{ id: 1, name: '小明', done: true },{ id: 2, name: '小华', done: true }]

2. some(ES6)遍历数组,只要有一个以上的元素满足条件就返回 true,否则返回 false

var arr = [
    { id: 1, name: '小明', done: true },
    { id: 2, name: '小华', done: true },
    { id: 3, name: '小红', done: false }
]

var bool = arr.some(function (item, index) {
    return item.done
})

console.log(bool)    // true

3.every(ES6)遍历数组,每一个元素都满足条件 则返回 true,否则返回 false

var arr = [
    { id: 1, name: '小明', done: true },
    { id: 2, name: '小华', done: true },
    { id: 3, name: '小红', done: false }
]

var bool = arr.every(function (item, index) {
    return item.done
})

console.log(bool)    // false

4.find(ES6)遍历数组,返回符合条件的第一个元素,如果没有符合条件的元素则返回 undefined

var arr = [1, 1, 2, 2, 3, 3, 4, 5, 6]
    
var num = arr.find(function (item, index) {
    return item === 3
})

console.log(num)   //  3

5. findIndex(ES6)遍历数组,返回符合条件的第一个元素的索引,如果没有符合条件的元素则返回 -1

var arr = [1, 1, 2, 2, 3, 3, 4, 5, 6]
    
var num = arr.findIndex(function (item) {
    return item === 3
})

console.log(num)   //  4

6. reduce (ES6)用来实现累加的效果 输出的总和是 sum+val(数值)

// reduce 用来实现累加的效果 (常用于写购物车价格的累加)
// 声明一个数组 数组里面放数字 让其里面的数字显示为累加的总和
let arr=[200,200,100]
let result =arr.reduce((sum,val,index)=>{
  200+200 index 
  400+100 index
// sum是总加后的和 val是变量里面的值 index为索引值 
  console.log(sum,val,index)  
  // 200 200 1
  // 400 100 2
  return sum +val;
})
console.log(result)  // 500