首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >除了数字,如何按字母顺序对对象数组进行排序?

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

Stack Overflow用户
提问于 2020-09-17 05:00:29
回答 1查看 172关注 0票数 4

我有这个数组:

代码语言:javascript
复制
sampleArray = [
  {name: 'product-2'},
  {name: 'product-15'},
  {name: 'product-3'},
  {name: 'product-10'}
]

我希望使用属性name对其进行排序,按字母顺序排序,字符串中的数字除外。

我正在结合使用sortlocaleCompare

代码语言:javascript
复制
sampleArray.sort((a, b) => a.name.localeCompare(b.name))

但是,由于name是一个包含数字的字符串,我得到的结果如下:

代码语言:javascript
复制
sampleArray = [
  {name: 'product-10'},
  {name: 'product-15'},
  {name: 'product-2'},
  {name: 'product-3'}
]

考虑到数字,我需要让它按正确的顺序排列。这会是什么:

代码语言:javascript
复制
sampleArray = [
  {name: 'product-2'},
  {name: 'product-3'},
  {name: 'product-10'},
  {name: 'product-15'}
]

我知道如果我只和数字打交道,我可以做到:

代码语言:javascript
复制
sampleArray.sort((a,b) => a - b)

但事实并非如此。

我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-17 05:04:34

你走了一半,String#localeCompare接受了一个选项,你可以对字符串使用自然排序。

代码语言:javascript
复制
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);

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63927851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档