# 数组中的方法

# some 循环

1
2
3
4
5
6
7
const arrconst arr = ['小红', '倪大红', '苏大强', '宝子']

arr.forEach((item, index) => {
if (item === '苏大强') {
console.log(index)
}
})

以上使用 forEach 循环,找到了‘苏大强’之后,还会进行循环 ——forEach 一旦开始无法停止,所以使用 forEach 性能较差

所以如果想要在数组中寻找元素,并且找到后就退出,可以使用 some

1
2
3
4
5
6
7
8
const arr = ['小红', '倪大红', '苏大强', '宝子']

arr.some((value, index) => {
if (value === '苏大强') {
console.log(index)
return true
}
})

# every 循环

every 循环对每个元素都执行一次函数,直到函数返回值为 false, 结束执行,最终结果为 false, 若所有值返回为 true, 最终结果为 true

1
2
3
4
5
6
7
const arr = [
{id: 1, name: '西瓜', state: true},
{id: 2, name: '榴莲', state: true},
{id: 3, name: '草莓', state: true},
]

const result = arr.every(item => item.state)

# reduce 方法

reduce 方法循环遍历数组中的每一个元素,并且定义回调函数的参数:第一个为上一次计算的 value, 如果没有上一次计算,取 reduce 方法中第二个参数所给项,第二个参数为当前遍历到的元素

1
2
3
4
5
6
7
8
const arr2 = [
{id: 1, name: '西瓜', state: true, price: 10, count: 1},
{id: 2, name: '榴莲', state: true, price: 80, count: 2},
{id: 3, name: '草莓', state: true, price: 99, count: 3},
]

const res = arr2.filter(item=>item.state).reduce((previousValue, currentValue) => previousValue+currentValue.price*currentValue.count,0)
console.log(res)