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;
},[]);