“我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第2篇文章,[点击查看活动详情] (s.juejin.cn/ds/jooSN7t "s.juejin.cn/ds/jooSN7t"…
Array.reduce()方法是对数组的遍历,返回一个单个返回值
/**
* @params total 必需。初始值, 或者计算结束后的返回值
* @params currentValue 必需。当前元素
* @params currentIndex 可选。当前元素的索引
* @params arr 可选。当前元素所属的数组对象
* @params initialValue 可选。传递给函数的初始值
**/
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
reduce 返回 数值
const array = [2,3,6,7]
//求和
const result = array.reduce((a,b,index) => {
return a+b
},0)
// 这里result 返回数值 18
//求积
const result = array.reduce((a,b,index) => {
return a*b
},1) //初始值传1
// 这里result 返回数值 252
reduce 返回字符串
const array = [1,2,3,4,5,6,7,8]
const result = array.reduce((a,b) => {
a = `${a}${b}`
return a
},'')
// 这里result 返回字符串 12345678
reduce 返回对象
const array = [
{key: 'name', value: 'wsf'},
{key: 'age', value: '18'},
{key: 'sex',value: 'man'}
]
const result = array.reduce((a,b) => {
a[b.key] = b.value
return a
},{})
// 这里result 返回对象 {name: "wsf",age: "18",sex: "man"}
reduce 返回数组
const array = [
{key: 'name', value: 'wsf'},
{key: 'age', value: '18'},
{key: 'sex',value: 'man'}
]
const result = array.reduce((a,b) => {
a.push(b.key)
return a
},[])
// 这里result 返回对象 ["name", "age", "sex"]
reduce 数组去重
// 普通数组去重
let arr = [1, 3, 3, 2, 4, 4, 5, 3, 2, 5, 6]
let newArr = arr.reduce((acc, cur) => {
if (!acc.includes(cur)) {
acc.push(cur)
}
return acc
}, [])
console.log(newArr) // (6) [1, 3, 2, 4, 5, 6]
// 对象数组去重, 对象数组去重需指定以哪个对象属性来去重
let arr1 = [
{
name: '李明',
age: 18
}, {
name: '韩梅梅',
age: 18
}, {
name: '韩梅梅',
age: 20
}, {
name: '李明',
age: 20
}, {
name: 'jack',
age: 22
}, {
name: '张三',
age: 22
}]
function doRepeat (arr, key) {
let obj = {}
let newArr1 = arr.reduce((acc, cur) => {
if (!obj[cur[key]]) {
obj[cur[key]] = cur[key]
acc.push(cur)
}
return acc
}, [])
return newArr1
}
// 姓名去重
console.log(doRepeat(arr1, 'name'))
// 0: {name: "李明", age: 18}
// 1: {name: "韩梅梅", age: 18}
// 2: {name: "jack", age: 22}
// 3: {name: "张三", age: 22}
// age去重
console.log(doRepeat(arr1, 'age'))
// 0: {name: "李明", age: 18}
// 1: {name: "韩梅梅", age: 20}
// 2: {name: "jack", age: 22}
reduce 二维数组转一维数组
var arr=[
[
{name:'123';age:'12'},
{name:'1456';age:'1'},
],
[
{name:'2';age:'3'},
{name:'3';age:'11'},
]
]
arr.reduce((item,p)=> p.concat(item),[])
// 返回
arr=[
{name:'123';age:'12'},
{name:'1456';age:'1'},
{name:'2';age:'3'},
{name:'3';age:'11'}
]