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日

悬赏问题

  • ¥15 用vmmare虚拟机用sentaurus仿真的时候,调用terminal程序,输入swb指令弹出这个,打不开workbench,桌面上面的sentaurus workbench也打不开
  • ¥75 使用winspool.drv的SetPrinter设置打印机失败
  • ¥15 simulink 硬件在环路仿真
  • ¥15 python动态规划:N根火柴摆出的最大数字
  • ¥20 (标签-excel)
  • ¥200 求idea10和MyEclipse7.1
  • ¥20 vb6.0截取当前窗体保存为jpg文件
  • ¥20 苹果手机不使用大疆sdk怎么获取遥控器控制信息或如何接入大疆sdk并且成功上架sdk
  • ¥20 woocommerce 注册按键重定向
  • ¥100 求书法图像文字切割代码