js将数组中的对象的某一属性值的数组按照其内部的某一字段的值重新排序

原始数据,其内部 opInfoMap 数组中的数据是乱序排列的,希望其能按照 taskStatus 顺序排列

const mockData = [
      {
        areaId: "1701618149f89accf2c06549d2022eeb",
        areaName: "1215-活动6",
        opInfoMap: [
          {
            count: 836,
            percent: "82.53%",
            taskStatus: 4,
          },
          {
            count: 177,
            percent: "17.47%",
            taskStatus: 5,
          },
          {
            count: 0,
            percent: "0%",
            taskStatus: 1,
          },
          {
            count: 0,
            percent: "0%",
            taskStatus: 2,
          },
          {
            count: 0,
            percent: "0%",
            taskStatus: 3,
          },
        ],
      },
      {
        areaId: "122687b5aa66018cd1a43fe9c7665071",
        areaName: "1215-活动10",
        opInfoMap: [
          {
            count: 2301,
            percent: "84.44%",
            taskStatus: 4,
          },
          {
            count: 423,
            percent: "15.52%",
            taskStatus: 5,
          },
          {
            count: 1,
            percent: "0.04%",
            taskStatus: 1,
          },
          {
            count: 0,
            percent: "0%",
            taskStatus: 2,
          },
          {
            count: 0,
            percent: "0%",
            taskStatus: 3,
          },
        ],
      },
    ];

期望格式:

const expectData = [
      {
        areaId: "1701618149f89accf2c06549d2022eeb",
        areaName: "1215-活动6",
        opInfoMap: [
          {
            count: 0,
            percent: "0%",
            taskStatus: 1,
          },
          {
            count: 0,
            percent: "0%",
            taskStatus: 2,
          },
          {
            count: 0,
            percent: "0%",
            taskStatus: 3,
          },
          {
            count: 836,
            percent: "82.53%",
            taskStatus: 4,
          },
          {
            count: 177,
            percent: "17.47%",
            taskStatus: 5,
          },
        ],
      },
      {
        areaId: "122687b5aa66018cd1a43fe9c7665071",
        areaName: "1215-活动10",
        opInfoMap: [
          {
            count: 1,
            percent: "0.04%",
            taskStatus: 1,
          },
          {
            count: 0,
            percent: "0%",
            taskStatus: 2,
          },
          {
            count: 0,
            percent: "0%",
            taskStatus: 3,
          },
          {
            count: 2301,
            percent: "84.44%",
            taskStatus: 4,
          },
          {
            count: 423,
            percent: "15.52%",
            taskStatus: 5,
          },
        ],
      },
    ];

实现:

const sortopInfoMapData = (data, name) => {
    const sortBy = (field) => {
      //根据传过来的字段进行排序
      return (x, y) => {
        return x[field] - y[field];
      };
    };
    data.map((obj) => {
      obj.opInfoMap.sort(sortBy(name));
      return obj;
    });
    return data;
  };

sortopInfoMapData(mockData, 'taskStatus')

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值