gpt4 book ai didi

javascript - 除数字外,如何按字母顺序对对象数组进行排序?

转载 作者:行者123 更新时间:2023-12-01 15:33:43 25 4
gpt4 key购买 nike

我有这个数组:

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);

关于javascript - 除数字外,如何按字母顺序对对象数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63927851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com