js 数组对象 排序相同的属性

有时候我们需要把相同的参数放一起,比如下面数组对象中,我们需要把spec相同的参数放一起怎么做呢?

let arr=[
    {
        name: "蓝色",
        spec: "颜色",
    },
    {
        name: "少年",
        spec: "适用人群",
    },
    {
        name: "黑色",
        spec: "颜色",
    },
    {
        name: "年轻人",
        spec: "适用人群",
    },
    {
        name: "111",
        spec: "规格a",
    },
    {
        name: "222",
        spec: "规格a",
    },
    {
        name: "aaa",
        spec: "规格aa",
    },
    {
        name: "bbb",
        spec: "规格aa",
    },
]
arr.sort((a,b)=>{
    if(a['spec']!=b['spec']){
        return a['spec'].localeCompare(b['spec']);
    }
})
console.log(arr)

localeCompare是什么东西?

  定义:用本地特定的顺序来比较两个字符串。

  语法:stringObject.localeCompare(target)

  参数:target——要以本地特定的顺序与 stringObject 进行比较的字符串。

返回值

  1、如果 stringObject 小于 target, localeCompare() 返回小于 0 的数。

  2、如果 stringObject 大于 target,localeCompare() 返回大于 0 的数。

  3、如果两个字符串相等,localeCompare() 返回 0。

posted @ 2022-03-03 14:59  smil、梵音  阅读(763)  评论(0编辑  收藏  举报