[英]How to sort array of objects alphabetically except for numbers?
我有这个数组:
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)
但事实并非如此。
我该如何解决这个问题?
您已经成功了一半, 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.