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 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
  • ¥50 C++五子棋AI程序编写
  • ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。
  • ¥15 SQL Server analysis services 服务安装失败