fzccccc 2022-02-24 15:37 采纳率: 100%
浏览 62
已结题

工作中遇到的前端JS问题

1.写一个函数,数组合并, 对数组成员相同项(名称、单位、排序、单价相同)合并为一项(合并数量金额),得到合并后数组。

 [ {
  "名称": '商品一',
    "排序": '10011',
    "单位": '吨',
    "数量": 5,
    "单价": '2.70',
    "金额": '13.50',
  },
  {
    "名称": '商品二',
    "排序": '20011',
    "单位": '吨',
    "数量": 5,
    "单价": '0.85',
    "金额": '4.25',
  },
  {
    "名称": '商品一',
    "排序": '10011',
    "单位": '吨',
    "数量": 5,
    "单价": '2.70',
    "金额": '13.50',
  },
  {
    "名称": '商品三',
    "排序": '20051',
    "单位": '吨',
    "数量": 5,
    "单价": '0.40',
    "金额": '2.00',
  },
  {
    "名称": '商品二',
    "排序": '20011',
    "单位": '吨',
    "数量": 5,
    "单价": '0.85',
    "金额": '4.25',
  }]

2.写一个函数,对接口 examp 发出 n 次请求,要求除了第一次请求,往后每次请求都等待上次请求完成并等待50毫秒再进行请求,所有请求结束后,打印出结果。
已对请求进行封装如下:


const getData = function (url, callback) {
setTimeout(() => {
if ("function" === typeof callback) {
callback(+new Date())
}
}, +(Math.random() * 1000).toFixed())
}
  • 写回答

4条回答 默认 最新

  • _念_ 2022-02-24 15:57
    关注
    
     let list = [ {
      "名称": '商品一',
        "排序": '10011',
        "单位": '吨',
        "数量": 5,
        "单价": '2.70',
        "金额": '13.50',
      },
      {
        "名称": '商品二',
        "排序": '20011',
        "单位": '吨',
        "数量": 5,
        "单价": '0.85',
        "金额": '4.25',
      },
      {
        "名称": '商品一',
        "排序": '10011',
        "单位": '吨',
        "数量": 5,
        "单价": '2.70',
        "金额": '13.50',
      },
      {
        "名称": '商品三',
        "排序": '20051',
        "单位": '吨',
        "数量": 5,
        "单价": '0.40',
        "金额": '2.00',
      },
      {
        "名称": '商品二',
        "排序": '20011',
        "单位": '吨',
        "数量": 5,
        "单价": '0.85',
        "金额": '4.25',
      }];
      function fn(list, keys, keys2) {
        let _list = [];
        if (keys && keys.length > 0) {
          list.forEach(item => {
            let res = _list.find(data => {
              let flag = true;
              for (let i = 0; i < keys.length; i ++) {
                if (item[keys[i]] != data[keys[i]]) {
                  flag = false;
                  break;
                }
              }
              return flag;
            });
            if (res) {
              keys2.forEach(key => {
                res[key] = res[key] * 1 + item[key] * 1;
              });
            } else {
              _list.push(item);
            }
          });
        }
        return _list;
      }
      console.log(fn(list, ["名称" ,"单位","排序", "单价"], ["金额", "数量"]));
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月18日
  • 已采纳回答 3月10日
  • 创建了问题 2月24日

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来