除数字外,如何按字母顺序对对象数组进行排序?
Posted
技术标签:
【中文标题】除数字外,如何按字母顺序对对象数组进行排序?【英文标题】:How to sort array of objects alphabetically except for numbers? 【发布时间】:2021-01-03 17:54:08 【问题描述】:我有这个数组:
sampleArray = [
name: 'product-2',
name: 'product-15',
name: 'product-3',
name: 'product-10'
]
我想使用属性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)
但事实并非如此。
我该如何解决这个问题?
【问题讨论】:
@zcoop98 不,我已经看到了。它为我提供了与我的代码相同的输出。 是的,我意识到你的问题在扣动扳机后就很明显了。很抱歉! 【参考方案1】:您已经完成了一半,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);
【讨论】:
以上是关于除数字外,如何按字母顺序对对象数组进行排序?的主要内容,如果未能解决你的问题,请参考以下文章