数组方法

ES5新增

对象调用的方法作用返回值
array.forEach(function(value, index, array){})遍历
array.map(function(value, index, array){})遍历&返回新数组
array.filter(function(value, index, array){ return 条件 })过滤&返回新数组
array.every(function(value, index, array){ return 条件})遍历&判断布尔值
array.some(function(value, index, array){return 条件})遍历&判断布尔值

forEach() 遍历

item是形参,如果是简单类型的形参的修改, 不会影响到原来值

let arr = [5, 6, 7, 8];
arr.forEach(function(item){
   item = item + 1;
})
//arr没有变化

let arr2 = [
    { name: 'zs', age: 18 },
    { name: 'zs', age: 20 },
]
arr2.forEach(function(item) {
    item.age = item.age + 1
})
//{ name: 'zs', age: 19 },
//{ name: 'zs', age: 21 },
这是以下几个方法共享的数据
let arr = [
  { name: 'zs', score: 100 },
  { name: 'ls', score: 99 },
  { name: 'li', score: 59 }
]

map() 遍历 + 返回

例:只保留名字,利用map()方法返回新数组来做

let onlyNameArr = arr.map( item => item.name )
//onlyNameArr === ['zs','ls','li']
//如果想原数组只保留name,直接赋值即可arr = arr.map(...)
//箭头函数只有一个参数,并需要被return时,不需要加return和花括号(自动加了)

filter() 遍历 + 返回

例:只保留60分以上的同学(包含的信息全都要),利用filter()过滤并返回新数组

let MoreThan60 = arr.filter( item => item.score >= 60 )
//需要加return条件,会把符合条件的item加到新数组
//(并不是只加item.score,这只是用于判断)

every() 遍历 + 判断

例:比如需要判断所有学生分数是否都高于90

let isMoreThan90 = arr.every( item => item.score >=90 )
//isMoreThan90 === false

some() 遍历 + 判断

只要数组中有一个判断正确,则返回true

ES6新增

对象调用的方法作用返回值
array.find(function(item, index) { return 条件 })遍历 / 查找找到的项 / undefined
array.findIndex(function(item, index) { return 条件 })遍历 / 查找下标 / -1
注意

find() 找第一个符合条件的项, 没找到会返回 undefined,找所有符合条件的还是使用filter()方法

findIndex() 找第一个符合条件项的下标, 没找到会返回 -1

复习数组基本的方法

增加

push() 增加到最后一个

shift() 增加到第一个

splice() 传三个参数( 从哪开始删 , 删几个 , 要添加到数组的元素 )

第一个参数如果是负数,则为倒数第几个(从-1开始算,不是0,等价于arr.length – n)

要添加到数组的元素可以有多个item1, item2, 

删除

pop() 删除最后一个

unshift() 删除第一个

splice() 根据索引指定删除某一个

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注