Ber*_*den 4 javascript arrays sorting object
我有这个数组:
sampleArray = [
{name: 'product-2'},
{name: 'product-15'},
{name: 'product-3'},
{name: 'product-10'}
]
Run Code Online (Sandbox Code Playgroud)
我想使用属性对其进行排序name,按字母顺序排列,字符串中的数字除外。
我sort结合使用localeCompare:
sampleArray.sort((a, b) => a.name.localeCompare(b.name))
Run Code Online (Sandbox Code Playgroud)
但是,作为name一个包含数字的字符串,我得到了这个:
sampleArray = [
{name: 'product-10'},
{name: 'product-15'},
{name: 'product-2'},
{name: 'product-3'}
]
Run Code Online (Sandbox Code Playgroud)
考虑到数字,我还需要以正确的顺序获取它。这会是什么:
sampleArray = [
{name: 'product-2'},
{name: 'product-3'},
{name: 'product-10'},
{name: 'product-15'}
]
Run Code Online (Sandbox Code Playgroud)
我知道如果我只处理数字,我可以做到:
sampleArray.sort((a,b) => a - b)
Run Code Online (Sandbox Code Playgroud)
但事实并非如此。
我该如何解决这个问题?
您已经成功了一半,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);Run Code Online (Sandbox Code Playgroud)