Skip to content

reduce详细

输入:一个数组中某个元素的值 输出:需要计算该元素在数组中重复出现的个数

function getItemNumber(arr) {
    let tempArr = [];
    let obj = {};
    let resultArr = [];
    arr.forEach(item => {
      if (!tempArr.includes(item)) {
        tempArr.push(item);
      }
    });
    arr.forEach(item => {
      if (obj[item]) {
        obj[item]++;
      } else {
        obj[item] = 1;
      }
    });
    tempArr.forEach(item => {
      resultArr.push({
        name: item,
        num: obj[item]
      });
    });
    return resultArr;
  },

使用reduce

arr.reduce((pre,cur)=>{
    pre[cur] = (pre[cur] || 0) + 1
    return pre },{})
//等于
arr.reduce((pre,cur)=>(
    pre[cur] = (pre[cur] || 0) + 1 ,pre ),{})