我有这个数组:sampleArray = [ {name: 'product-2'}, {name: 'product-15'}, {name: 'product-3'}, {name: 'product-10'}]我想使用 property 对其进行排序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)但事实并非如此。我该如何解决这个问题?
1 回答

慕仙森
TA贡献1827条经验 获得超8个赞
您已经中途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);
添加回答
举报
0/150
提交
取消