使用 Lodash 的 sortBy() 函数对数组进行排序

发布于 2022-08-13 13:03:15 字数 1978 浏览 156 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

文章
评论
27 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文