如何使用 underscore.js 对文本混合数进行排序

How to sort text mixed number with underscore.js

我对 _.sortBy(underscore.js) 的排序值有一些疑问。并且 我有这样的价值:

[
  {
    first: A,
    second: 10,
    third: D3
  }
  {
    first: B,
    second: 2,
    third: F3
  }
  {
    first: C,
    second: 3,
    third: G4
  }
  {
    first: A,
    second: 9,
    third: G5
  }
]

然后我尝试将其排序为:

var sortedArray = _.sortBy(list_data, function(data) {
   return [data[0].first, data[0].second.join("_");
});

总是return[{first:A,second:10,third:D3}, {first:A,second:9,third:G6}, {first:B,second:2,third:F3}, {first:C,second:3,third:G4}]

但我希望它 return 像这样 [{first:A,second:9,third:G6}, {first:A,second:10,third:D3}, {first:B,second:2,third:F3}, {first:C,second:3,third:G4}]

我该怎么办?请帮忙,我是这个的新手。非常感谢。

你可以直接使用 Array.prototype.sort https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

var array = [
  {
    first: 'C',
    second: 3,
    third: 'D3'
  },
  {
    first: 'A',
    second: 9,
    third: 'G5'
  }
];

var sorted = array.sort(function(a, b) {
   var first = a.first + a.second + a.third;
   var second = b.first + b.second + b.third;
   return first.localeCompare(second);
});
var sortedArray = _(list_data)
                  .chain()
                  .sortBy(function(data){
                    return data.second;
                  })
                  .sortBy(function(data){
                    return data.first;
                  })
                  .value();