标签:15 name age reduce sex let 方法
定义
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
注意:
1. reduce() 对于空数组是不会执行回调函数的。
2. 当提供了初始值initialValue,则第一次执行回调函数时previousvalue就是initialValue,则currentValue是数组第一项;如果没有提供初始值,则previousvalue是数组第一项,currentValue是数组第二项。
语法:
array.reduce( function( total, currentValue, currentIndex, arr ), initialValue )
reduce的常用方法 ( 最好设置默认值 )
1. 数组求和
let numbers = [1, 2, 3, 4, 5]
let result1 = numbers.reduce((sum, n) => sum + n, 0)
console.log(result1); // 15
2. 累加数组中对象的值
let numberObj = [{n: 1}, {n: 2}, {n: 3}, {n: 4}, {n: 5}]
let result2 = numberObj.reduce((sum, obj) => sum + obj.n, 0)
console.log(result2); // 15
3. 计算数组中每个元素出现的次数
let colors = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'purple', 'red']
let countColor = colors.reduce(function(allColors, color){
if(color in allColors) {
allColors[color]++;
} else {
allColors[color] = 1;
}
return allColors;
}, {});
console.log(countColor); // {blue: 1, green: 1, indigo: 1, orange: 1, purple: 1, red: 2, yellow: 1}
4. 数组去重
let arr = [1, 2, 3, 4, 4, 1]
let newArr = arr.reduce((pre,cur)=>{
if(!pre.includes(cur)){
return pre.concat(cur)
}else{
return pre
}
},[])
console.log(newArr); // [1, 2, 3, 4]
5. 二维数组变一维数组
let twoArray = [[0, 1], [2, 3], [4, 5]]
let oneArray = twoArray.reduce((arr, val) => arr.concat(val), [])
console.log(oneArray); // [0, 1, 2, 3, 4, 5]
6. 根据属性把对象分类
let peopleInfo = [
{name: 'aaa', age: 15, sex: '男'},
{name: 'bbb', age: 16, sex: '女'},
{name: 'ccc', age: 15, sex: '女'}
]
function groupBy(objectArray, property) {
return objectArray.reduce((resultObj, obj) => {
var key = obj[property]
if(!resultObj[key]) {
resultObj[key] = []
}
resultObj[key].push(obj)
return resultObj;
}, {})
}
let peopleAgeGroup = groupBy(peopleInfo, 'age')
console.log(peopleAgeGroup); // {15: [{name: "aaa", age: 15, sex: "男"}, {name: "ccc", age: 15, sex: "女"}],16: [{name: "bbb", age: 16, sex: "女"}]}
let peopleSexGroup = groupBy(peopleInfo, 'sex')
console.log(peopleSexGroup); // {男: [{name: "aaa", age: 15, sex: "男"}], 女: [{name: "bbb", age: 16, sex: "女"}, {name: "ccc", age: 15, sex: "女"}]}
标签:15,name,age,reduce,sex,let,方法 来源: https://blog.csdn.net/keke11211/article/details/120179620
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。