# 数组中的方法
# 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)
|