reduce方法理解与项目实际运用

arr.reduce(function(prev,cur,index,arr){
...
}, init);

prev 表示上一次调用回调时的返回值,或者初始值 init;
cur 表示当前正在处理的数组元素;
index 表示当前正在处理的数组元素的索引,若提供 init 值,则索引为0,否则索引为1;
arr 表示原数组;
init 表示初始值。

需求将data的数据输出为
[{“city”:“上海”,“area”:[“浦东”,“静安”,“闵行”]},{“city”:“广东”,“area”:[“广州”,“深圳”,“东莞”]},{“city”:“湖南”,“area”:[“长沙”,“常德”]}]

var data = [
         {city:'上海',area:'浦东'},
         {city:'上海',area:'静安'},
         {city:'上海',area:'闵行'},
         {city:'广东',area:'广州'},
         {city:'广东',area:'深圳'},
         {city:'广东',area:'东莞'},
         {city:'湖南',area:'长沙'},
         {city:'湖南',area:'常德'}
  ]
  var someData = data.reduce((prev,cur,index) => {
      var isSome = prev.some((item,index)=>{
          if(item.city == cur.city){
              prev[index].area.push(cur.area);
              return true;
          }
          return false;
      })
      if(!isSome){
          prev.push({city:cur.city,area:[cur.area]})
      }
      return prev;
  },[])
 
  console.log(someData);

求数组项之和

var sum = arr.reduce(function (prev, cur) {
    return prev + cur;
},0);

求数组项最大值

var max = arr.reduce(function (prev, cur) {
    return Math.max(prev,cur);
});

数组去重

var newArr = arr.reduce(function (prev, cur) {
    prev.indexOf(cur) === -1 && prev.push(cur);
    return prev;
},[]);

猜你喜欢

转载自blog.csdn.net/weixin_45561719/article/details/106629725
今日推荐