vue实现将一个数组内的相同数据进行合并
获取服务器传来的数组数据进行,找出其中价格相同的进行数量相加,合并该段数据:
/**先将传来的订单列表进行四舍五入,再将价格相同的订单进行合并
*@param{Object}orderList:要进行操作的订单
*/
asyncmergeOrder(orderList){
console.log(orderList);
letcontrast_1=JSON.parse(JSON.stringify(orderList));
for(letxincontrast_1){
contrast_1[x].trade_price=this.toDecimal(contrast_1[x].trade_price,this.digit_num);//进行四舍五入
}
letcontrast_2=JSON.parse(JSON.stringify(contrast_1));//再复制一个用来做对比
letcontainers=[];//存放已经合并后的数据
/*循环找出相同的值*/
console.log(contrast_1);
for(letiincontrast_1){
console.log(contrast_1[i]);
letcontainer_list={
trade_num:contrast_1[i].trade_num,
trade_order_id:contrast_1[i].trade_order_id,
trade_price:contrast_1[i].trade_price,
trade_type:contrast_1[i].trade_type
}
for(letmincontrast_2){
if(!contrast_2[m]){
if(m==i){
container_list=null;
break;//如果该值为空值就跳过
}
continue;
}
if(contrast_1[i].trade_price==contrast_2[m].trade_price){
if(m==i){
contrast_2[m]=null;
continue;
}
/*如果遇到没有合并的相同价格就进行累加*/
container_list={
trade_num:parseInt(container_list.trade_num)+parseInt(contrast_2[m].trade_num),
trade_order_id:container_list.trade_order_id+'--'+contrast_2[m].trade_order_id,
trade_price:container_list.trade_price,
trade_type:container_list.trade_type
}
contrast_2[m]=null;//销毁该次循环的值,防止多次循环到该值
}
}
console.log(container_list);
if(!container_list){
//如果为空值就直接进行下次循环
continue;
}
/*将该次循环得到的数据放入容器内*/
containers.push(container_list);
console.log(containers);
}
console.log(containers);
returncontainers;
}
/**
*@param{number}x:要进行操作的数字
*@param{number}digit:要达到的精度,比如小数点后8位,不足补0
*/
toDecimal(x,digit){
letf=parseFloat(x);
letindex=Math.pow(10,digit);
if(isNaN(f)){
returnfalse;
}
f=Math.round(x*index)/index;//四舍五入
lets=f.toString();
letrs=s.indexOf('.');
if(rs<0){
rs=s.length;
if(digit>0){
s+='.';
}
}
if(digit>0){
while(s.length<=rs+digit){
s+='0';
}
}
returns;
},
以上这篇vue实现将一个数组内的相同数据进行合并就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。