带有ES6数组的Javascript按对象排序失败

带有ES6数组的Javascript按对象排序失败,javascript,arrays,sorting,ecmascript-6,Javascript,Arrays,Sorting,Ecmascript 6,我想做的是用variant的长度对上述项目进行排序,这样在排序之后,第二个项目将是第一个,因为variant数组中有3个项目 我有以下数据结构和代码: var项目=[ {name:'one',变量:[{id:1,name:'ABS'},]}, {name:'second',变量:[{id:1,name:'BTC'},{id:2,name:'SAM'},{id:2,name:'KXD'}]} ] console.log(items.sort((a,b)=>a.variant.length>b.v

我想做的是用variant的长度对上述项目进行排序,这样在排序之后,第二个项目将是第一个,因为variant数组中有3个项目

我有以下数据结构和代码:

var项目=[
{name:'one',变量:[{id:1,name:'ABS'},]},
{name:'second',变量:[{id:1,name:'BTC'},{id:2,name:'SAM'},{id:2,name:'KXD'}]}
]

console.log(items.sort((a,b)=>a.variant.length>b.variant.length))
您必须返回1、-1或0
如果要更改为订单,请将1与-1交换

items.sort((a,b)=>{
        if(a.variant.length > b.variant.length)
            return 1;
        else if (b.variant.length > a.variant.length)
            return -1;
        else // if a.variant.length === b.variant.length
            return 0;
     })
请注意,例如,用于排序的回调可能不应仅返回布尔值
。排序((a,b)=>b.variant.length-a.variant.length)
即可