如何使用 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();
我对 _.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();