为了账号安全,请及时绑定邮箱和手机立即绑定

除数字外,如何按字母顺序对对象数组进行排序?

除数字外,如何按字母顺序对对象数组进行排序?

沧海一幻觉 2023-03-10 15:20:18
我有这个数组:sampleArray = [  {name: 'product-2'},  {name: 'product-15'},  {name: 'product-3'},  {name: 'product-10'}]我想使用 property 对其进行排序name,按字母顺序排列,但字符串中的数字除外。我正在sort结合使用localeCompare:sampleArray.sort((a, b) => a.name.localeCompare(b.name))但是,就像name一个包含数字的字符串一样,我得到了这个:sampleArray = [  {name: 'product-10'},  {name: 'product-15'},  {name: 'product-2'},  {name: 'product-3'}]考虑到数字,我需要以正确的顺序获取它。这会是什么:sampleArray = [  {name: 'product-2'},  {name: 'product-3'},  {name: 'product-10'},  {name: 'product-15'}]我知道如果我只处理数字我可以这样做:sampleArray.sort((a,b) => a - b)但事实并非如此。我该如何解决这个问题?
查看完整描述

1 回答

?
慕仙森

TA贡献1827条经验 获得超8个赞

您已经中途String#localeCompare接受了一个选项,您可以在其中对字符串使用自然排序。



const

    array = [{ name: 'product-2' }, { name: 'product-15' }, { name: 'product-3' }, { name: 'product-10' }];


array.sort((a, b) => a.name.localeCompare(

    b.name,

    undefined,

    { numeric: true, sensitivity: 'base' }

));


console.log(array);


查看完整回答
反对 回复 2023-03-10
  • 1 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号