1. 对数组求和
传统的数组求和方式需要使用forEach
循环遍历数组中的每一个元素,然后累加。然而这种方式需要新增一个用于存储累加结果的变量。
function sum(arr) {
let res = 0
arr.forEach(element => res = res + element);
return res
}
还可以通过数组的reduce
方法对数组进行求和。reduce
方法的第一个参数传入一个函数,函数的第一个参数表示初始值,第二个参数会遍历数组中的每一个元素;reduce
方法的第二个参数表示函数中第一个参数的初始值。
const res = arr.reduce((sum, curVal) => sum + curVal, 0) // 返回值会作为下一次执行时sum的值
2. 计数
使用reduce
方法查看数组中,哪些元素是符合要求的。
// 查找数组中元素值为20的个数
const arr = [10, 20, 30, 20, 20, 40, 50]
const n = 20
const count = arr.reduce((count, val) => {
return val === n ? count + 1 : count
}, 0)
3. 将数组中的元素拼接成字符串
传统的方法需要先定义一个变量,赋值为空字符,然后使用forEach方法循环遍历数组中的每一个元素并将其拼接起来。
const arr = [10, 20, 30, 40, 50]
let str = ''
arr.forEach(n => str + n)
console.log(str) // '1020304050'
还可以通过map方法进行拼接,但是map方法返回的是一个数组,需要使用join
将数组的元素转换为字符串。
const arr = [
{name: '张三', age: '20'},
{name: '李四', age: '21'},
{name: '小明', age: '22'},
]
const str = arr.map(item => {
return `${item.name} - ${item.age}`
}).join('\n')
console.log(str)
使用map方法拼接字符串需要额外使用join
方法,然而可以使用数组的reduce
方法进行拼接,无需借助join
方法。
const str = arr.reduce((s, item)=>{
return `${s}${item.name} - ${item.age}\n`
}, '')