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实现预览待上传的本地图片
Mar 15 Javascript
js兼容标准的表格变色效果
Jun 28 Javascript
jquery 获取json数据实现代码
Apr 27 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
May 24 Javascript
jQuery实现表格冻结顶栏效果
Aug 20 jQuery
H5实现仿flash效果的实现代码
Sep 29 Javascript
JS返回顶部实例代码
Aug 09 Javascript
js将键值对字符串转为json字符串的方法
Mar 30 Javascript
JS中通过url动态获取图片大小的方法小结(两种方法)
Oct 31 Javascript
浅谈Node框架接入ELK实践总结
Feb 22 Javascript
详解ECMAScript2019/ES10新属性
Dec 06 Javascript
JS ES6异步解决方案
Apr 29 Javascript
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
PHP封装的字符串加密解密函数
2015/12/18 PHP
php中的异常和错误浅析
2017/05/03 PHP
PHP实现的微信APP支付功能示例【基于TP5框架】
2019/09/16 PHP
setTimeout和setInterval的浏览器兼容性分析
2007/02/27 Javascript
Js 随机数产生6位数字
2010/05/13 Javascript
常用一些Javascript判断函数
2012/08/14 Javascript
jQuery用unbind方法去掉hover事件及其他方法介绍
2013/03/18 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
2015/09/02 Javascript
js判断鼠标位置是否在某个div中的方法
2016/02/26 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
2016/09/29 Javascript
Jquery删除css属性的简单方法
2016/12/04 Javascript
浅谈React高阶组件
2018/03/28 Javascript
跨域请求两种方法 jsonp和cors的实现
2018/11/11 Javascript
性能优化篇之Webpack构建速度优化的建议
2019/04/03 Javascript
详解jQuery中的getAll()和cleanData()
2019/04/15 jQuery
细说Vue组件的服务器端渲染的过程
2019/05/30 Javascript
layer实现登录弹框,登录成功后关闭弹框并调用父窗口的例子
2019/09/11 Javascript
Vue实现点击当前行变色
2020/12/14 Vue.js
[01:02:55]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
Sanic框架蓝图用法实例分析
2018/07/17 Python
Django model序列化为json的方法示例
2018/10/16 Python
Flask核心机制之上下文源码剖析
2018/12/25 Python
Python3列表List入门知识附实例
2020/02/09 Python
HTML5单页面手势滑屏切换原理分析
2017/07/10 HTML / CSS
法国最大的在线眼镜店:EasyLunettes
2019/08/26 全球购物
Ado与Ado.net的相同与不同
2014/12/08 面试题
超市重阳节活动方案
2014/02/10 职场文书
四查四看整改措施
2014/09/19 职场文书
2014年国庆节庆祝建国65周年比赛演讲稿
2014/09/21 职场文书
祖国在我心中演讲稿(小学生)
2014/09/23 职场文书
社区灵活就业证明
2014/11/03 职场文书
2017春节晚会开幕词
2016/03/03 职场文书
python读取pdf格式文档的实现代码
2021/04/01 Python
分析MySQL抛出异常的几种常见解决方式
2021/05/18 MySQL
星际争霸 Light vs Action 一场把教主看到鬼畜的比赛
2022/04/01 星际争霸