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中使用正则匹配多条,且获取每条中的分组数据
Nov 30 Javascript
jQuery下通过$.browser来判断浏览器.
Apr 05 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
Jun 01 Javascript
javascript图片滑动效果实现
Jan 28 Javascript
JS使用post提交的两种方式
Dec 03 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
Aug 29 Javascript
js中通过getElementsByName访问name集合对象的方法
Oct 31 Javascript
AJAX和jQuery动态加载数据的实现方法
Dec 05 Javascript
angularjs实现首页轮播图效果
Apr 14 Javascript
脚手架vue-cli工程webpack的基本用法详解
Sep 29 Javascript
vue中轮训器的使用
Jan 27 Javascript
js实现鼠标拖拽div左右滑动
Jan 15 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
让你同时上传 1000 个文件 (一)
2006/10/09 PHP
SSI指令
2006/11/25 PHP
PHP计划任务、定时执行任务的实现代码
2011/04/23 PHP
php中$_GET与$_POST过滤sql注入的方法
2014/11/03 PHP
理解 JavaScript 预解析
2009/10/25 Javascript
JS链式调用的实现方法
2013/03/07 Javascript
JS 打印功能代码可实现打印预览、打印设置等
2014/10/31 Javascript
JavaScript中使用Object.create()创建对象介绍
2014/12/30 Javascript
JS判断客服QQ号在线还是离线状态的方法
2015/01/13 Javascript
jQuery中offsetParent()方法用法实例
2015/01/19 Javascript
JS动态修改图片的URL(src)的方法
2015/04/01 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
2016/06/20 Javascript
微信小程序 setData的使用方法详解
2017/04/20 Javascript
微信小程序滚动Tab实现左右可滑动切换
2017/08/17 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
2018/03/26 Javascript
js遍历添加栏目类添加css 再点击其它删除css【推荐】
2018/06/12 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
layDate插件设置开始和结束时间
2018/11/15 Javascript
js生成1到100的随机数最简单的实现方法
2020/02/07 Javascript
使用python绘制常用的图表
2016/08/27 Python
Python列表推导式与生成器用法分析
2018/08/02 Python
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
Python操作qml对象过程详解
2019/09/26 Python
python中设置超时跳过,超时退出的方式
2019/12/13 Python
python利用JMeter测试Tornado的多线程
2020/01/12 Python
Python pip安装模块提示错误解决方案
2020/05/22 Python
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
html5中JavaScript removeChild 删除所有节点
2014/05/16 HTML / CSS
美国孕妇装品牌:Destination Maternity
2018/02/04 全球购物
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
岗位竞聘书范文
2014/03/31 职场文书
《画家乡》教学反思
2014/04/22 职场文书
镇班子对照检查材料思想汇报
2014/09/24 职场文书
教学质量月活动总结
2015/05/11 职场文书
在前女友婚礼上,用Python破解了现场的WIFI还把名称改成了
2021/05/28 Python
浅谈怎么给Python添加类型标注
2021/06/08 Python