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 相关文章推荐
JavaScript 对象成员的可见性说明
Oct 16 Javascript
LazyForm jQuery plugin 定制您的CheckBox Radio和Select
Oct 24 Javascript
javascript+mapbar实现地图定位
Apr 09 Javascript
屏蔽script注入小例子
Nov 12 Javascript
jQuery多项选项卡的实现思路附样式及代码
Jun 03 Javascript
微信支付如何实现内置浏览器的H5页面支付
Sep 25 Javascript
JS中事件冒泡和事件捕获介绍
Dec 13 Javascript
vue项目中api接口管理总结
Apr 20 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
Jun 04 Javascript
详解Js里的for…in和for…of的用法
Mar 28 Javascript
优雅地使用loading(推荐)
Apr 20 Javascript
vue 插件的方法代码详解
Jun 06 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连接mssql数据库的几种方法
2013/02/21 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
2019/04/02 PHP
使用PHPWord生成word文档的方法详解
2019/06/06 PHP
Yii 实现数据加密和解密
2021/03/09 PHP
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
单元选择合并变色示例代码
2014/05/26 Javascript
通过js为元素添加多项样式,浏览器全兼容写法
2014/08/30 Javascript
js剪切板应用clipboardData实例解析
2016/05/29 Javascript
Bootstrap零基础入门教程(二)
2016/07/18 Javascript
JS正则表达式验证密码格式的集中情况总结
2017/02/23 Javascript
javascript防篡改对象实例详解
2017/04/10 Javascript
JavaScript实现计算圆周率到小数点后100位的方法示例
2018/05/08 Javascript
JavaScript中变量提升与函数提升经典实例分析
2018/07/26 Javascript
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
2019/05/13 Javascript
javascript canvas时钟模拟器
2020/07/13 Javascript
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[49:21]TNC vs VG 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第三场 8.20.mp4
2019/08/22 DOTA
在Python中利用Into包整洁地进行数据迁移的教程
2015/03/30 Python
python与caffe改变通道顺序的方法
2018/08/04 Python
python3调用百度翻译API实现实时翻译
2018/08/16 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
2019/05/10 Python
python 实现将多条曲线画在一幅图上的方法
2019/07/07 Python
opencv-python 读取图像并转换颜色空间实例
2019/12/09 Python
Python写捕鱼达人的游戏实现
2020/03/31 Python
利用python生成照片墙的示例代码
2020/04/09 Python
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
Tech21美国/加拿大:英国NO.1防摔保护壳品牌
2018/01/20 全球购物
BannerBuzz加拿大:在线定制横幅印刷、广告和标志
2020/03/10 全球购物
大学生最常用的自我评价
2013/12/07 职场文书
《小壁虎借尾巴》教学反思
2014/02/16 职场文书
保护环境倡议书范文
2014/05/13 职场文书
承诺书样本
2014/08/30 职场文书
逃课打麻将检讨书
2014/10/05 职场文书
高一军训口号
2015/12/25 职场文书
《岳阳楼记》原文、译文赏析
2019/09/10 职场文书
node.js如何自定义实现一个EventEmitter
2021/07/16 Javascript