EN
JavaScript - sort array except one element
1 answers
0 points
How can I sort all values in array of object by key
except one element?
For example, when I have an array:
xxxxxxxxxx
1
var myArray = [
2
{ key: 'd', value: 'value_D' },
3
{ key: 'c', value: 'value_C' },
4
{ key: 'e', value: 'value_E' },
5
{ key: 'undefined', value: 'undefined' },
6
{ key: 'b', value: 'value_B' },
7
{ key: 'a', value: 'value_A' }
8
];
I want all the values to be sorted by key
, except the undefined value, I want it to be at the beginning.
So the result would be:
xxxxxxxxxx
1
[
2
{ key: 'undefined', value: 'undefined' },
3
{ key: 'a', value: 'value_A' },
4
{ key: 'b', value: 'value_B' },
5
{ key: 'c', value: 'value_C' },
6
{ key: 'd', value: 'value_D' },
7
{ key: 'e', value: 'value_E' }
8
]
1 answer
0 points
You can use sort()
method with custom compare function as its argument.
Practical example:
xxxxxxxxxx
1
var myArray = [
2
{ key: 'd', value: 'value_D' },
3
{ key: 'c', value: 'value_C' },
4
{ key: 'e', value: 'value_E' },
5
{ key: 'undefined', value: 'undefined' },
6
{ key: 'b', value: 'value_B' },
7
{ key: 'a', value: 'value_A' },
8
];
9
10
myArray.sort(function(a, b) {
11
if (a.key == b.key) return 0;
12
if (a.key == 'undefined') return -1;
13
if (b.key == 'undefined') return 1;
14
if (a.key < b.key) return -1;
15
if (a.key > b.key) return 1;
16
return 0;
17
});
18
19
console.log(JSON.stringify(myArray, null, 4));
Note:
This function sorts all items using regular sorting, except for items with
undefined
keys, they are being placed at the beginning.
References
0 commentsShow commentsAdd comment