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 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。