javascript - Javascript Lodash按外部数组和内部属性排序
问题描述
我有一组人,我需要按定义的外部数组(顺序)然后按年龄进行排序。我正在使用 lodashsortBy
const _ = require('lodash');
const arr = [
{ name: "Mandy", age: "34" },
{ name: "Shelly", age: "32" },
{ name: "Kyle", age: "12" },
{ name: "Kyle", age: "60" },
{ name: "Mandy", age: "32" },
{ name: "Mandy", age: "99" },
{ name: "Shelly", age: "30" },
{ name: "John", age: "3" },
{ name: "John", age: "1" },
{ name: "John", age: "6" },
{ name: "Mandy", age: "3" }
];
let order = ["Shelly", "John", "Mandy", "Kyle"];
let sortedArrByOrder = _.sortBy(arr, [person => order.indexOf(person.name), 'age'], ['asc', 'desc']);
console.log(sortedArrByOrder);
但是年龄不是按降序排列的。有没有办法让它工作?
解决方案
您可以进行回调并返回负年龄并省略订单数组。
const
arr = [{ name: "Mandy", age: "34" }, { name: "Shelly", age: "32" }, { name: "Kyle", age: "12" }, { name: "Kyle", age: "60" }, { name: "Mandy", age: "32" }, { name: "Mandy", age: "99" }, { name: "Shelly", age: "30" }, { name: "John", age: "3" }, { name: "John", age: "1" }, { name: "John", age: "6" }, { name: "Mandy", age: "3" }],
order = ["Shelly", "John", "Mandy", "Kyle"],
sortedArrByOrder = _.sortBy(arr, [
({ name }) => order.indexOf(name),
({ age }) => -age
]);
console.log(sortedArrByOrder);
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>
推荐阅读
- content-management-system - 内容管理系统 (CMS) 和内容交付网络 (CDN) 之间的区别?
- c# - Dotnet Core 3.1 Entity Framework - entity.SetTableName 的问题当前不可用
- r - 如何在 R 中概括很多分类变量?
- javascript - 获取 MS Word 插件 Javascript API 中的列表样式类型
- typescript - 在 typescript void 函数中使用 await
- azure-logic-apps - 创建用户后不给我分配邮件 - 逻辑应用程序是否出错?
- java - JPA 查询返回实体列表
- cors - 从 Elm 中的 HTTP 响应中读取自定义标头
- scala - 遍历 Array[DateType] 类型的 Spark 列,查看数组中是否有连续两天
- r - 确保最后一行是从数据集中删除的唯一行的最佳方法是什么