Javascript 如何按字母顺序(数字除外)对对象数组进行排序?
我有这个阵列:Javascript 如何按字母顺序(数字除外)对对象数组进行排序?,javascript,arrays,sorting,object,Javascript,Arrays,Sorting,Object,我有这个阵列: sampleArray = [ {name: 'product-2'}, {name: 'product-15'}, {name: 'product-3'}, {name: 'product-10'} ] 我想使用属性name对其排序,除了字符串中的数字之外,按字母顺序排序 我正在将排序与本地比较结合使用: sampleArray.sort((a, b) => a.name.localeCompare(b.name)) 但是,由于name是一个包含数字的
sampleArray = [
{name: 'product-2'},
{name: 'product-15'},
{name: 'product-3'},
{name: 'product-10'}
]
我想使用属性name
对其排序,除了字符串中的数字之外,按字母顺序排序
我正在将排序
与本地比较
结合使用:
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)
但事实并非如此
我该如何解决这个问题?您已经做了一半,接受了一个选项,您可以使用字符串的自然排序
const
数组=[{name:'product-2'},{name:'product-15'},{name:'product-3'},{name:'product-10'}];
array.sort((a,b)=>a.name.localeCompare(
b、 名字,
未定义,
{numeric:true,灵敏度:'base'}
));
console.log(数组)代码>@zcoop98不,我已经看到了。它给了我和我的代码一样的输出。是的,我意识到你的问题在扣动扳机后就很明显了。对不起!