gpt4 book ai didi

javascript - 使用 lodash orderBy 或 sortBy 并处理空值

转载 作者:行者123 更新时间:2023-12-05 00:38:43 24 4
gpt4 key购买 nike

我在使用 sortBy 或 orderBy 按名称对数组数组进行排序时遇到问题,其中名称可能为空。我希望能够按名称按升序(A-Z)排序,最后是空值。

目前我的代码:

_sortBy(myArray, objectA => objectA.name)

将在开始时返回空值,然后继续对具有名称值的对象进行排序。

预先感谢您的任何帮助。

最佳答案

假设您的输入是这样的:

var data=[
{name:'John Alexov'},
{name:null},
{name:'Alex Jones'},
{name:null}
]

如果名称中没有数值,那么一个简单的
_.sortBy(data, x => x.name)

或者
_.orderBy(data, x => x.name) // since the default order is ["asc"]` 

会给你想要的结果 nulls在名字之后。

但是,假设您出于某种原因在名称中有数值:

var data=[ {name:'John Alexov'}, {name:null}, {name:'Alex Jones'}, {name:null}, {name:null}, {name:'Mark 3rd'}, {name:'Bob Marley'}, {name:'john c'}, {name:'john 11th'}, {name:'john 1st'} ]

var result = data.sort((x,y) =>
x.name && y.name ? x.name.localeCompare(y.name, undefined, {numeric:
true}) : x.name ? -1 : y.name ? 1 : 0)

console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>


然后你需要像 localeCompare(y.name, undefined, {numeric: true}) 这样的东西确保 john 1st is above john 11th . localeCompare也会 give you options当涉及到外壳等时。

关于javascript - 使用 lodash orderBy 或 sortBy 并处理空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51681073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com