文章目录
- 数组常用方法
- foreach
- indexof
- some
- every
- map
- filter
- reduce
数组常用方法
foreach
和之前for循环作用基本一样,只不过比for更灵活方便一些
参数:回调函数,该回调函数有三个参数
- 遍历项
- 索引
- 该数组
indexof
用于查找在数组中的位置,返回值为索引,如果没有找到返回-1
参数:
- 第一个参数为要查找的数据
- 第二个参数为从哪个位置开始
const arr = [1,2,3,4,5]
const index = arr.indexOf(2)
console.log(index)
some
some方法可以用作条件查找,循环的过程中,只要有一个能满足条件,即停止循环,并返回值
返回值:
- true:有一项满足条件
- false:一项满足条件的也没有
const arr = [1,2,3,4,5]
arr.some(item => {
return item === 4
})
和includes的区别:
- includes只能用于简单数组的查找,包含
- some任何数组都可以,而且some还可以根据逻辑进行查找
every
every方法是返回的条件全部成立即返回true,否则返回false
只要有一项不成立,循环立即停止,并返回false
const arr = [1,2,3,4,5]
const flag = arr.every(item => {
return item === 3
})
console.log(flag) // false
全选功能
map
进行数组映射,及数组格式化,会返回一个新数组,新数组的值来自于map回调函数内的返回值
特点:
- 新数组的长度一定和原数组长度是一致的
- 如果没有返回值,新数组中的值则为undefined
const arr = [1,2,3,4,5]
const newArr = arr.map(item => {
return item + 1
})
console.log(newArr) // [2,3,4,5,6]
实际应用:
后端返回数据格式为:
const arr = [
{ id: 1, title: '好房', tags: '南北朝向,地铁近,有公交' },
{ id: 2, title: '好房', tags: '地铁近,有公交' }
]
前端数据处理:
const newArr = arr.map(item => {
return {
...item,
tags: item.tags.split(',')
}
})
console.log(newArr)
react中将数据处理为jsx数组或更新数据均使用map
filter
实现数组过滤,返回值为新数组,新数组中的数据来自于,回调函数中返回条件为true的数据
const arr = [1,2,3,4,5]
const newArr = arr.filter(item => {
return item%2 === 0
})
console.log(newArr) // [2,4]
reduce
方法对数组中的每个元素按序执行一个由您提供的 reduce 函数,每一次运行 reduce 会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。
参数:
- 回调函数
- 参数1: 上一次计算出结果的值
- 参数2: 当前循环项
- 初始值: 如果不传,默认值为数组第一项(并且第一项不在参与运算)
- currentIndex: 正在处理的索引
- 处理的数组
const arr = [1,2,3,4,5]
const total = arr.reduce((pre, cur) => {
console.log(pre, cur)
return pre + cur
}, 0)
console.log(total) // 15
const arr = [
{ num: 2, price: 178 },
{ num: 3, price: 188 },
{ num: 1, price: 168 }
]
const totalPrice = arr.reduce((pre, cur) => {
return pre += cur.num * cur.price
}, 0)
console.log(totalPrice)