我正在尝试根据多个属性对包含对象的数组进行排序。即,如果两个对象之间的第一个属性相同,则应使用第二个属性来比较这两个对象。例如,考虑以下数组:
var patients = [
[{name: 'John', roomNumber: 1, bedNumber: 1}],
[{name: 'Lisa', roomNumber: 1, bedNumber: 2}],
[{name: 'Chris', roomNumber: 2, bedNumber: 1}],
[{name: 'Omar', roomNumber: 3, bedNumber: 1}]
];
对这些进行排序roomNumber
属性我将使用以下代码:
var sortedArray = _.sortBy(patients, function(patient) {
return patient[0].roomNumber;
});
这工作正常,但我该如何继续才能正确排序“John”和“Lisa”?
sortBy
说它是一种稳定的排序算法,因此您应该能够首先按第二个属性排序,然后再按第一个属性排序,如下所示:
var sortedArray = _(patients).chain().sortBy(function(patient) {
return patient[0].name;
}).sortBy(function(patient) {
return patient[0].roomNumber;
}).value();
当第二个sortBy
发现 John 和 Lisa 有相同的房间号,它将按照找到它们的顺序保留它们,即第一个房间号sortBy
设置为“丽莎,约翰”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)