vue实现将一个数组内的相同数据进行合并


Posted in Javascript onNovember 07, 2019

获取服务器传来的数组数据进行,找出其中价格相同的进行数量相加,合并该段数据:

/** 先将传来的订单列表进行四舍五入,再将价格相同的订单进行合并
  * @param {Object} orderList :要进行操作的订单
  */
 async mergeOrder(orderList) {
  console.log(orderList);
  let contrast_1 = JSON.parse(JSON.stringify(orderList));
  for(let x in contrast_1){
  contrast_1[x].trade_price = this.toDecimal(contrast_1[x].trade_price,this.digit_num); //进行四舍五入
  }
  
  let contrast_2 = JSON.parse(JSON.stringify(contrast_1)); //再复制一个用来做对比
  let containers = []; //存放已经合并后的数据
  /* 循环找出相同的值 */
  console.log(contrast_1);
  for(let i in contrast_1){
  console.log(contrast_1[i]);
  let container_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(let m in contrast_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);
  return containers;
 }
/**
  * @param {number} x: 要进行操作的数字
  * @param {number} digit: 要达到的精度,比如小数点后8位,不足补0
  */
 toDecimal(x, digit) {
  let f = parseFloat(x);
  let index = Math.pow(10, digit);
  if (isNaN(f)) {
  return false;
  }
  f = Math.round(x * index) / index; //四舍五入
  let s = f.toString();
  let rs = s.indexOf('.');
  if (rs < 0) {
  rs = s.length;
  if (digit > 0) {
   s += '.';
  }
  }
  if (digit > 0) {
  while (s.length <= rs + digit) {
   s += '0';
  }
  }
  return s;
 },

以上这篇vue实现将一个数组内的相同数据进行合并就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js实现select下拉框菜单
Dec 08 Javascript
js中获取键盘事件的简单实现方法
Oct 10 Javascript
基于jquery实现二级联动效果
Mar 30 jQuery
Angularjs 实现移动端在线测评效果(推荐)
Apr 05 Javascript
浅谈jQuery框架Ajax常用选项
Jul 08 jQuery
解决vue打包项目后刷新404的问题
Mar 06 Javascript
vue中如何实现pdf文件预览的方法
Jul 12 Javascript
解决JavaScript layui 下拉框不显示的问题
Aug 14 Javascript
Angular 2使用路由自定义弹出组件toast操作示例
May 10 Javascript
基于node+vue实现简单的WebSocket聊天功能
Feb 01 Javascript
详解webpack的clean-webpack-plugin插件报错
Oct 16 Javascript
vue+element table表格实现动态列筛选的示例代码
Jan 14 Vue.js
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
Nov 07 #jQuery
ElementUI多个子组件表单的校验管理实现
Nov 07 #Javascript
构建Vue大型应用的10个最佳实践(小结)
Nov 07 #Javascript
Node配合WebSocket做多文件下载以及进度回传
Nov 07 #Javascript
vue 实现单选框设置默认选中值
Nov 07 #Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
Nov 07 #Javascript
vue获取data数据改变前后的值方法
Nov 07 #Javascript
You might like
smarty 原来也不过如此~~呵呵
2006/11/25 PHP
Thinkphp事务操作实例(推荐)
2017/04/01 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
拥抱模块化的JavaScript
2012/03/07 Javascript
用console.table()调试javascript
2014/09/04 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
2015/10/16 Javascript
js日期插件dateHelp获取本月、三个月、今年的日期
2016/03/07 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
jQuery插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
2017/04/02 jQuery
iscroll实现下拉刷新功能
2017/07/18 Javascript
Vue2.0 vue-source jsonp 跨域请求
2017/08/04 Javascript
微信小程序获取用户信息的两种方法wx.getUserInfo与open-data实例分析
2019/05/03 Javascript
JS实现随机抽选获奖者
2019/11/07 Javascript
OpenLayers3实现地图显示功能
2020/09/25 Javascript
Python3实现的腾讯微博自动发帖小工具
2013/11/11 Python
Django自定义分页与bootstrap分页结合
2021/02/22 Python
详解Python里使用正则表达式的ASCII模式
2017/11/02 Python
Python进程间通信Queue实例解析
2018/01/25 Python
django传值给模板, 再用JS接收并进行操作的实例
2018/05/28 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
Python-while 计算100以内奇数和的方法
2019/06/11 Python
Python批量启动多线程代码实例
2020/02/18 Python
基于Pytorch SSD模型分析
2020/02/18 Python
为什么说python更适合树莓派编程
2020/07/20 Python
Python使用for生成列表实现过程解析
2020/09/22 Python
详解android与HTML混合开发总结
2018/06/06 HTML / CSS
New delete 与malloc free 的联系与区别
2013/02/04 面试题
工程专业求职自荐书范文
2014/02/08 职场文书
初三学生语文考试作弊检讨书
2014/12/14 职场文书
2019行政前台转正申请书范文3篇
2019/08/15 职场文书
用 Python 元类的特性实现 ORM 框架
2021/05/19 Python
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python
Python制作春联的示例代码
2022/01/22 Python
Grafana可视化监控系统结合SpringBoot使用
2022/04/19 Redis