javascript - 无论如何使用lodash对数字对象的json数组进行排序/排序
问题描述
我正在尝试使用 lodash“orderBy”方法对 JSON 对象数组进行排序。我需要使用我可以提供的“密钥”通过 ASC 和 DESC 订购。但是当给出“id”时,它不能按预期工作。这是我的输入,
[
{
"disable":"0",
"id":"37",
"name":"abcd",
"owner":"john",
},
{
"disable":"1",
"id":"38",
"name":"test",
"owner":"paul",
},
{
"disable":"1",
"id":"9",
"name":"value1",
"owner":"Khan",
},
{
"disable":"1",
"id":"7",
"name":"value2",
"owner":"Cathrine",
},
{
"disable":"1",
"id":"8",
"name":"value4",
"owner":"Venba",
},
{
"disable":"1",
"id":"2",
"name":"value5",
"owner":"Hawk",
},
{
"disable":"1",
"id":"4",
"name":"value7",
"owner":"other",
},
]
我正在使用下面的方法,但它没有按预期工作,因为“id”列在字符串中。
_.orderBy(data, [{'id': Number}], 'desc');
我目前的输出是,
[
{
"disable": "0",
"id": "37",
"name": "abcd",
"owner": "john"
},
{
"disable": "1",
"id": "38",
"name": "test",
"owner": "paul"
},
{
"disable": "1",
"id": "9",
"name": "value1",
"owner": "Khan"
},
{
"disable": "1",
"id": "7",
"name": "value2",
"owner": "Cathrine"
},
{
"disable": "1",
"id": "8",
"name": "value4",
"owner": "Venba"
},
{
"disable": "1",
"id": "2",
"name": "value5",
"owner": "Hawk"
},
{
"disable": "1",
"id": "4",
"name": "value7",
"owner": "other"
}
]
有什么方法可以正确排序。任何帮助都感激不尽。
解决方案
您可以传入回调_.orderBy
并返回 id 字段包含的字符串值的数字表示形式。例如:o => parseInt(o.id)
这是一个片段:
let data = [{"disable":"0","id":"37","name":"abcd","owner":"john"},{"disable":"1","id":"38","name":"test","owner":"paul"},{"disable":"1","id":"9","name":"value1","owner":"Khan"},{"disable":"1","id":"7","name":"value2","owner":"Cathrine"},{"disable":"1","id":"8","name":"value4","owner":"Venba"},{"disable":"1","id":"2","name":"value5","owner":"Hawk"},{"disable":"1","id":"4","name":"value7","owner":"other"}];
console.log('Sorted Data: ', _.orderBy(data, o => parseInt(o.id), 'desc'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>
推荐阅读
- reactjs - 如何使用 react-paginate 使用反应钩子转换基于类的反应组件
- python - 带有重复条目的 Pandas 枢轴
- javascript - 一个字符串类型的数组项如何连接,每个数组项都有一个逗号字符,除了最后一项必须用“and”连接?
- rust - Rust 返回枚举作为泛型类型
- vue.js - CORS 仅在 Windows 上阻止了对图像的访问
- c# - Blazor WebAssembly 与服务器端 Razor 页面授权问题
- android - 在 Flutter 中输入错误的 SMS 代码时如何捕获错误?
- php - APIPlatform JWT authentication_token 路由问题
- assembly - 需要了解 .init_array 部分
- python - 使用 Python 删除 CSV 中的第一个条目