lodash 对 javascript 中的对象数组进行排序

lodash sorting an array of objects in javascript

我有一个来自服务器的对象响应数组,我试图按 uid 升序排序,同时保持 data 数组的整个数组完好无损。意思是 data 数组中有 2 个元素。我正在尝试查看数组中所有元素的其中一个数组中的 uid,并确定元素在 data 数组中的放置顺序。

我已经使用 lodash 尝试了以下方法,但它似乎不起作用,但我觉得我已经接近成功并需要一些帮助:

// sort by:
console.log(res.results[0].data[0].row[1].uid)

_.forEach(res.results, function(obj) {
  _.forEach(data, function(anotherObj) {
    _.forEach(row, function(row) {
      data.row = _.sortBy(data.row, function(row) {
      return row[1].uid;
      });
    });
  });
});

这是从服务器返回的对象数组:

var res = {
  results: [{
    columns: ['large', 'medium', 'small'],
    data: [{
      row: [{
        sid: 13,
        tid: 427
      },
        {
          uid: 69,
          vid: 450,
          wid: 65
        },
        null],
      multirow: {
        nodule: [{
          xid: '427',
          properties: {
            yid: 13,
            zid: 427
          }
        },
          {
            aid: '450',
            properties: {
              uid: 69,
              bid: 450,
              cid: 65
            }
          }]
      }
    },
      {
        row: [{
          sid: 13,
          tid: 427
        },
          {
            vid: 432,
            uid: 65,
            wid: 61
          },
          null],
        multirow: {
          nodule: [{
            xid: '427',
            properties: {
              yid: 13,
              zid: 427
            }
          },
            {
              aid: '432',
              properties: {
                bid: 432,
                uid: 65,
                cid: 61
              }
            }]
        }
      }]
  }],
  errors: []
};

你不需要那么多循环:

_.forEach(res.results, function(result) {
  result.data = _.sortBy(result.data, function(datum) {
    return datum.row[1].uid;
  });
});

您只需要遍历结果,每个结果可能都有一个您要排序的数据数组。 sortBy 回调然后获取该数组的每个元素,并且应该 return 要比较的值。