乐闻世界logo
搜索文章和话题

How can I use lodash/underscore to sort by multiple nested fields?

1 个月前提问
1 个月前修改
浏览次数2

1个答案

1

在使用lodash库来按照多个嵌套字段进行排序时,我们可以利用_.orderBy函数。这个函数允许我们定义排序的字段和每个字段的排序顺序(升序或降序)。在处理嵌套字段时,我们可以通过字符串的方式来访问这些嵌套属性。

假设我们有以下这样一个对象数组,其中包含了一些嵌套的字段,我们希望根据这些嵌套字段进行排序:

javascript
const users = [ { user: "fred", age: 48, address: { city: "Los Angeles", street: "Sunset Boulevard" } }, { user: "barney", age: 34, address: { city: "New York", street: "5th Avenue" } }, { user: "fred", age: 40, address: { city: "Chicago", street: "Lake Shore Drive" } } ];

如果我们想要首先按照用户名(user)进行升序排序,然后在相同用户名的情况下按城市(address.city)进行降序排序,我们可以这样使用_.orderBy

javascript
import _ from 'lodash'; const sortedUsers = _.orderBy(users, ['user', 'address.city'], ['asc', 'desc']); console.log(sortedUsers);

这里,['user', 'address.city']定义了排序的键,['asc', 'desc']定义每个键的排序顺序。输出将会是:

javascript
[ { user: "barney", age: 34, address: { city: "New York", street: "5th Avenue" } }, { user: "fred", age: 40, address: { city: "Chicago", street: "Lake Shore Drive" } }, { user: "fred", age: 48, address: { city: "Los Angeles", street: "Sunset Boulevard" } } ]

通过这个例子可以看到,_.orderBy是非常灵活且强大的,适用于多种复杂的排序需求,包括对嵌套属性的排序。

2024年8月9日 04:03 回复

你的答案