Javascript 使用lodash orderBy或sortBy并处理空值

Javascript 使用lodash orderBy或sortBy并处理空值,javascript,lodash,Javascript,Lodash,我在使用sortBy或orderBy按名称对数组进行排序时遇到问题,其中name可能为null。我希望能够按名称按升序(A-Z)排序,并在末尾使用空值 当前我的代码: _sortBy(myArray, objectA => objectA.name) 将在开始时返回空值,然后继续对后面带有名称值的对象进行排序 提前感谢您的帮助。在vanilla js中,您可以: data.sort((a,b)=>{ 如果(a.name==b.name){ 返回0 }else if(a.name==nu

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

当前我的代码:

_sortBy(myArray, objectA => objectA.name)
将在开始时返回空值,然后继续对后面带有名称值的对象进行排序

提前感谢您的帮助。

在vanilla js中,您可以:

data.sort((a,b)=>{
如果(a.name==b.name){
返回0
}else if(a.name==null | | b.name==null){
返回名称?-1:1;
}
返回a.name.localeCompare(b.name);
})
console.log(数据)

var数据=[
{name:'F'},
{name:null},
{name:null},
{name:'A'}
]

假设您的输入是:

var data=[
   {name:'John Alexov'},
   {name:null},
   {name:'Alex Jones'},
   {name:null}
 ]
如果名称中没有数值,则使用简单的

_.sortBy(data, x => x.name)

将为您提供所需的结果,
null
位于名称之后

但是,由于某些原因,我们假设名称中有数值:

var data=[{name:'John Alexov'},{name:null},{name:'Alex Jones'},{name:null},{name:'Mark 3rd'},{name:'Bob Marley'},{name:'John c'},{name:'John 11'},{name:'John 1st'}]
var result=data.sort((x,y)=>
x、 name&&y.name?x.name.localeCompare(y.name,未定义,{数字:
true}):x.name?-1:y.name?1:0)
console.log(结果)

可能的重复数据您可以发布您的数据样本吗?因为
\uu.sortBy(people,x=>x.name)
与lodash
4.17.10
完全符合您的要求。其中people=[{name:'Bob'},{name:null},{name:'Alex'}]您确定您的名字的字符(如果不是null)将在'A-Z'内,而不是特殊字符吗?
_.orderBy(data, x => x.name) // since the default order is ["asc"]`