使用 Lodash 的 sortBy() 函数对数组进行排序
JavaScript 有一个内置的 Array#sort()
函数 对数组进行就地排序的
内置的 sort()
函数运行良好,但在对对象数组进行排序时会变得很麻烦。
另一方面, _.sortBy()
允许您按属性名称对对象数组进行排序,如下所示。
const characters = [
{ name: 'Jean-Luc Picard', age: 59 },
{ name: 'William Riker', age: 29 },
{ name: 'Deanna Troi', age: 28 },
{ name: 'Worf', age: 24 }
];
// Sort characters by the `age` property
const sorted = _.sortBy(characters, 'age');
sorted[0].name; // Worf
sorted[1].name; // Deanna Troi
sorted[2].name; // William Riker
sorted[3].name; // Jean-Luc Picard
第一个参数 sortBy()
是要排序的数组,然后第二个参数称为 iteratees
,你可以想到 iteratees
作为一个函数,它将每个数组元素转换为可排序的东西。 例如,而不是传递属性名称 age
作为字符串,您可以改为传递 iteratees
函数作为第二个参数。
const characters = [
{ name: 'Jean-Luc Picard', age: 59 },
{ name: 'William Riker', age: 29 },
{ name: 'Deanna Troi', age: 28 },
{ name: 'Worf', age: 24 }
];
// Sort characters by the `age` property
const iteratees = obj => obj.age;
const sorted = _.sortBy(characters, iteratees);
sorted[0].name; // Worf
sorted[1].name; // Deanna Troi
sorted[2].name; // William Riker
sorted[3].name; // Jean-Luc Picard
还有许多其他使用方法 iteratees
来变换数组。
例如,您可以按角色姓名的长度排序,而不是按角色的年龄排序。
const characters = [
{ name: 'Jean-Luc Picard', age: 59 },
{ name: 'William Riker', age: 29 },
{ name: 'Deanna Troi', age: 28 },
{ name: 'Worf', age: 24 }
];
// Sort characters by the length of their name, longest first. Note
// the negative sign.
const iteratees = obj => -obj.name.length;
const sorted = _.sortBy(characters, iteratees);
sorted[0].name; // Jean-Luc Picard
sorted[1].name; // William Riker
sorted[2].name; // Deanna Troi
sorted[3].name; // Worf
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论