当前位置: 首页 > 编程笔记 >

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

严俊友
2023-03-14
本文向大家介绍vue实现将一个数组内的相同数据进行合并,包括了vue实现将一个数组内的相同数据进行合并的使用技巧和注意事项,需要的朋友参考一下

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

/** 先将传来的订单列表进行四舍五入,再将价格相同的订单进行合并
  * @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实现将一个数组内的相同数据进行合并就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍Vue组件内部实现一个双向数据绑定的实例代码,包括了Vue组件内部实现一个双向数据绑定的实例代码的使用技巧和注意事项,需要的朋友参考一下 思路:父组件通过props传值给子组件,子组件通过 $emit 来通知父组件修改相应的props值,具体实现如下: 总结 以上所述是小编给大家介绍的Vue组件内部实现一个双向数据绑定的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编

  • 问题内容: var arrObj = [{a:1, b:2},{c:3, d:4},{e:5, f:6}]; 如何将其合并为一个obj? 问题答案: 如果您的环境支持,那么您可以像这样简洁地进行操作 ES5解决方案: 您可以使用这样的 此解决方案仅将的所有键及其值收集在中的每个对象中,最终将结果返回给我们。 这张支票 有必要确保我们在结果中不包括所有继承的可枚举属性。

  • 我有一个问题把两个数组组合在一起。一个数组是问题,另一个数组是答案。 不起作用,因为我丢失了一些键+值。而且也不是我想要的,我希望有人能帮我。 这两个数组都得到了键,这是我要针对的键。 数组1(答案); 和包含问题的数组: 最后的数组必须是什么样子的:

  • 问题内容: 我有一张表,上面有一些植物的记录。植物可以具有多个名称,该表将其显示为不同的记录。该表称为new_plantsname 这继续超过3000条记录 我想要的是将具有相同Plantid的记录组合在一起,并在不同的列中显示不同的名称: 等等 我也想将结果保存到新表中 问题答案: 基本上,这是一个(您未指定RDBMS)我假设MySQL并且它没有函数,因此您将需要使用带有语句的聚合函数来复制它。

  • 定义为一维数组,定义为二维数组,但这一行为是两个夜晚。原因是什么? 以及该代码的输出:

  • 我正处于复杂的聚合查询(具有查找和许多组/展开阶段)的中间,并且遇到来自不同字段的两个不同数组的合并问题。 至于现在,在其中一个阶段之后(在我的大查询的中间或查找之后),我有以下输出: 我想: 因此,每个值,我想根据它的索引添加到内的每个对象,比如第一个内的应该有第一个来自 具有数组索引的架构): 问题是: 我无法在聚合之后或之前执行此操作,因为: > 我没有必要的数据,因为它是从不同集合中查找的