繁体   English   中英

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

[英]How to sort array of objects alphabetically except for numbers?

我有这个数组:

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

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

我将sortlocaleCompare结合使用:

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)

但事实并非如此。

我该如何解决这个问题?

您已经成功了一半, 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM