如何使用 Javascript Underscore.js 的 _.sortBy() 方法按 javascript 中的多个键对对象数组进行排序?
How to sort an object array by multiple keys in javascript using _.sortBy() method of Javascript Underscore.js?
我正在使用 Javascript Underscore.js 的 _.sortBy() 方法通过多个键对对象数组进行排序。我使用名称对象中的名字和姓氏进行排序。
我的代码:
var names = [
{ fname: 'Chloe', lname: 'Bennet' },
{ fname: 'Adam', lname: 'Levine' },
{ fname: 'Chris', lname: 'Hemsworth' },
{ fname: 'Justin', lname: 'Bieber' },
{ fname: 'Chloe', lname: 'Moretz' },
{ fname: 'Taylor', lname: 'Swift' }
];
console.log(_.sortBy(someData, 'fname' + ' ' + 'lname')
预期结果:
{ fname: 'Adam', lname: 'Levine' },
{ fname: 'Chloe', lname: 'Bennet' },
{ fname: 'Chloe', lname: 'Moretz' },
{ fname: 'Chris', lname: 'Hemsworth' },
{ fname: 'Justin', lname: 'Bieber' },
{ fname: 'Taylor', lname: 'Swift' }
但它不是对数组进行排序。
根据文档:
var names = [
{ fname: 'Chloe', lname: 'Bennet' },
{ fname: 'Adam', lname: 'Levine' },
{ fname: 'Chris', lname: 'Hemsworth' },
{ fname: 'Justin', lname: 'Bieber' },
{ fname: 'Chloe', lname: 'Moretz' },
{ fname: 'Taylor', lname: 'Swift' }
];
console.log(_.sortBy(names, ['fname', 'lname']));
此致,
文森特
您需要提供更复杂比较的函数:
var names = [
{ fname: 'Chloe', lname: 'Bennet' },
{ fname: 'Adam', lname: 'Levine' },
{ fname: 'Chris', lname: 'Hemsworth' },
{ fname: 'Justin', lname: 'Bieber' },
{ fname: 'Chloe', lname: 'Moretz' },
{ fname: 'Taylor', lname: 'Swift' }
];
console.log(_.sortBy(names, ({ fname, lname }) => fname + ' ' + lname))
.as-console-wrapper {max-height: 100% !important;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>
我想出了我的答案。感谢大家给我出主意。
var names = [
{ fname: 'Chloe', lname: 'Bennet' },
{ fname: 'Adam', lname: 'Levine' },
{ fname: 'Chris', lname: 'Hemsworth' },
{ fname: 'Justin', lname: 'Bieber' },
{ fname: 'Chloe', lname: 'Moretz' },
{ fname: 'Taylor', lname: 'Swift' }
];
console.log(
_.sortBy(names ,
function(value) {
return value.fname + ' ' + value.lname;
}
)
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
我正在使用 Javascript Underscore.js 的 _.sortBy() 方法通过多个键对对象数组进行排序。我使用名称对象中的名字和姓氏进行排序。
我的代码:
var names = [
{ fname: 'Chloe', lname: 'Bennet' },
{ fname: 'Adam', lname: 'Levine' },
{ fname: 'Chris', lname: 'Hemsworth' },
{ fname: 'Justin', lname: 'Bieber' },
{ fname: 'Chloe', lname: 'Moretz' },
{ fname: 'Taylor', lname: 'Swift' }
];
console.log(_.sortBy(someData, 'fname' + ' ' + 'lname')
预期结果:
{ fname: 'Adam', lname: 'Levine' },
{ fname: 'Chloe', lname: 'Bennet' },
{ fname: 'Chloe', lname: 'Moretz' },
{ fname: 'Chris', lname: 'Hemsworth' },
{ fname: 'Justin', lname: 'Bieber' },
{ fname: 'Taylor', lname: 'Swift' }
但它不是对数组进行排序。
根据文档:
var names = [
{ fname: 'Chloe', lname: 'Bennet' },
{ fname: 'Adam', lname: 'Levine' },
{ fname: 'Chris', lname: 'Hemsworth' },
{ fname: 'Justin', lname: 'Bieber' },
{ fname: 'Chloe', lname: 'Moretz' },
{ fname: 'Taylor', lname: 'Swift' }
];
console.log(_.sortBy(names, ['fname', 'lname']));
此致, 文森特
您需要提供更复杂比较的函数:
var names = [
{ fname: 'Chloe', lname: 'Bennet' },
{ fname: 'Adam', lname: 'Levine' },
{ fname: 'Chris', lname: 'Hemsworth' },
{ fname: 'Justin', lname: 'Bieber' },
{ fname: 'Chloe', lname: 'Moretz' },
{ fname: 'Taylor', lname: 'Swift' }
];
console.log(_.sortBy(names, ({ fname, lname }) => fname + ' ' + lname))
.as-console-wrapper {max-height: 100% !important;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>
我想出了我的答案。感谢大家给我出主意。
var names = [
{ fname: 'Chloe', lname: 'Bennet' },
{ fname: 'Adam', lname: 'Levine' },
{ fname: 'Chris', lname: 'Hemsworth' },
{ fname: 'Justin', lname: 'Bieber' },
{ fname: 'Chloe', lname: 'Moretz' },
{ fname: 'Taylor', lname: 'Swift' }
];
console.log(
_.sortBy(names ,
function(value) {
return value.fname + ' ' + value.lname;
}
)
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>