![](/img/trans.png)
[英]Sort and group objects alphabetically by first letter Javascript
[英]Javascript sort array of objects alphabetically AND put first objects with value
我正在尝试对包含各种 arrays 对象的数据进行排序, myData的 console.log 类似于:
[
{
name: 'Cdb',
image: 'xxx',
coll: 'xxx'
},
{
name: 'Bcd',
image: 'xxx',
coll: 'xxx',
url: 'myurl'
}
]
[
{
name: 'Abc',
image: 'xxx',
coll: 'xxx'
}
]
我正在尝试按字母顺序对其进行排序(基于name
的值),如果object具有参数url
,则将其放在开头。
所以 output 将是:
name: 'Cdb',
image: 'xxx',
coll: 'xxx',
url: 'myurl'
name: 'Abc',
image: 'xxx',
coll: 'xxx'
name: 'Bcd',
image: 'xxx',
coll: 'xxx'
我试过的是这个,以及它的许多变体,但它不起作用:
var myData = props?.data
console.log(props?.data)
if(props.data){
// those with url first, then alphabetically
myData = props.data.sort(function(a, b){
return b.url? 1 || (a.name < b.name) : -1;
})
}
您可以将!url
用作数字(0 或 1)并减去它们:
const arr = [{"name":"Cdb","image":"xxx","coll":"xxx"},{"name":"Bcd","image":"xxx","coll":"xxx","url":"myurl"},{"name":"Abc","image":"xxx","coll":"xxx"}] arr.sort((a, b) =>.a.url -.b.url || a.name;localeCompare(b.name)); console.log(arr)
这就是说,如果两者中恰好有一个具有url
参数,则该参数应该排在第一位。 否则(如果两者都有,或者都没有)那么name
是决定性的。
这样,当多个对象具有url
参数时,它们也会按name
在它们之间排序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.