reduce() 方法来对数组中的 A属性和 B属性进行乘积操作并求和

 求 detailLists:[ { money:'3000', machine_count:'2', }, { money:'4000', machine_count:'2', }, { money:'5000', machine_count:'3', } ]数组中每个money和machine_count乘起来的值相加之和 

 

      detailLists:[
        {
          money:'3000',
          machine_count:'2',
        },
        {
          money:'4000',
          machine_count:'2',
        },
        {
          money:'5000',
          machine_count:'3',
        }
      ]

 可以使用 JavaScript 中的 reduce() 方法来对数组中的 money 和 machine_count 属性进行乘积操作并求和。具体的代码实现如下: 

// 假设数据数组为 detailLists
const total = detailLists.reduce((acc, cur) => {
  const product = parseInt(cur.money) * parseInt(cur.machine_count);
  return acc + product;
}, 0);

console.log(total); // 输出结果为 29000

reduce()其他用法

数组去重 

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]

 二维数组变一维数组

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]

根据属性把对象分类 

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: "女"}]}

 计算数组中每个元素出现的次数 

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}

猜你喜欢

转载自blog.csdn.net/zhangxueyou2223/article/details/129851758