用js的reduce方法,reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组。
语法:
arr.reduce(callback,[initialValue])
//callback (执行数组中每个值的函数,包含四个参数)
previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue))
currentValue (数组中当前被处理的元素)
index (当前元素在数组中的索引)
array (调用 reduce 的数组)
initialValue (作为第一次调用 callback 的第一个参数。)
使用方法
var a = [
{name:'222',id:1,test:'啊啊啊'},
{name:'44123',id:5,test:'啊啊啊'},
{name:'54',id:1,test:'笑嘻嘻'},
{name:'45',id:5,test:'啊啊啊'},
{name:'431',id:1,test:'水电费'},
{name:'62',id:4,test:'阿萨德'},
{name:'222',id:1,test:'啊啊啊'},
{name:'54',id:4,test:'的的撒'},
{name:'76',id:1,test:'爱迪生'},
];
let result = a.reduce(function(initArray,item,xindex,array){
//initArray 初始值 或者是上一次调用返回的值
//item 数组中当前被处理的元素
//xindex 当前元素的下标
//array 被reduce的数组 即上面代码中的数组a
let index = item.test;
if(initArray[index]){
initArray[index].push(item)
} else {
initArray[index] = [item]
}
return initArray
},[]);
console.log(result)