JS将数据按照某个指定的参数进行分类转换
前段时间遇见这样的问题,需要将一组交易信息按照交易时间来分块展示
但是后端并不能传来我想要的数据格式
后端传来的数据格式如下
[{"cardNo":"6238211234567900","dayOfWeek":"周一","dealType":"自助消费","settleDt":"20190930","transAmount":220,"transDate":"1569855419063"},
{"cardNo":"6238211234566589","dayOfWeek":"周四","dealType":"自助消费","settleDt":"20190926","transAmount":100,"transDate":"1569855419063"},
{"cardNo":"6238211234561585","dayOfWeek":"周五","dealType":"自助消费","settleDt":"20190927","transAmount":280,"transDate":"1569855419063"},
{"cardNo":"6238211234567900","dayOfWeek":"周一","dealType":"自助消费","settleDt":"20190930","transAmount":580,"transDate":"1569855419063"},
{"cardNo":"6238211234562556","dayOfWeek":"周日","dealType":"自助消费","settleDt":"20190929","transAmount":260,"transDate":"1569855419063"},
{"cardNo":"6238211234566589","dayOfWeek":"周日","dealType":"自助消费","settleDt":"20190929","transAmount":20,"transDate":"1569855419063"}]
需要数据转换后的格式为
[{"dayOfWeek":"周~","settleDt":"20190929",otherData:[{},{}]},
{"dayOfWeek":"周~","settleDt":"20190928",otherData:[{},{}]}...]
方法如下所示
function classify(data){
let list = [];
data.map(ele=>{
var settleDt = ele.settleDt.slice(4).substring(2,4);
if(list.length<=0){
list.push({
settleDt:settleDt,
dayOfWeek:ele.dayOfWeek,
otherData:[ele]
})
return;
}
let child = list.find(item=>{
return item.settleDt == settleDt
})
if(child){
child.otherData.push(ele)
}else{
list.push({
settleDt:settleDt,
dayOfWeek:ele.dayOfWeek,
otherData:[ele]
})
}
})
console.log(list);
return list;
}
classify(arr);
通过如上这段代码就可以将数据转化为咱们想要的格式啦!