You can use strcmp to compare string
Apr 21, 2022
7
Level 1
Sorting a vue array alphanumerically
I have an array that looks like this
0 => [
category => [],
main_product_codes => [
[
'code' => 'SD20',
'description' => 'a description'
],
[
'code' => 'SD21',
'description' => 'a description'
],
[
'code' => 'P36',
'description' => 'a description'
],
[
'code' => 'P37',
'description' => 'a description'
],
[
'code' => 'P3',
'description' => 'a description'
],
[
'code' => 'P14',
'description' => 'a description'
],
[
'code' => 'P6',
'description' => 'a description'
],
[
'code' => 'EX10',
'description' => 'a description'
],
[
'code' => 'P18',
'description' => 'a description'
],
[
'code' => 'P27',
'description' => 'a description'
],
[
'code' => 'P28',
'description' => 'a description'
],
[
'code' => 'P30',
'description' => 'a description'
],
[
'code' => 'P33',
'description' => 'a description'
],
[
'code' => 'EX11',
'description' => 'a description'
]
]
]
the issue I'm having is that I'm trying to sort this by alphanumerically, but I've only managed to sort it alphabetically
this is what I'm doing to sort my array out
selectProduct(product){
product['main_product_codes'] = Object.values(product['main_product_codes']).sort(function(a, b){
if(a.code > b.code) { return 1; }
if(a.code < b.code) { return -1; }
return 0;
});
}
Level 80
@ixxi JavaScript will sort values with whatever algorithm you give it.
If you want to sort alpha-numerical values then you could instead use the localeCompare method that exists on strings:
selectProduct(product) {
product['main_product_codes'] = Object.values(product['main_product_codes']).sort(function(a, b) {
return a.code.localeCompare(b.code, 'en', { numeric: true });
});
}
This should take into account numbers as well as just alphabetical characters.
Please or to participate in this conversation.