I am working on a d3.js based application where I am getting data from mysql.
I took one column named time_in_service from mysql table whose datatype in mysql is 'int' and grouped it based on number of frequency of values. The grouped function is below:
tisData = d3.nest()
.key(function (d) { return d.time_in_service; })
.rollup(function (v) { return v.length })
.entries(data);
The tisData which is created above is in below form while printed using console.log:
0: {key: '30', value: 9}
1: {key: '16', value: 30}
2: {key: '6', value: 12}
3: {key: '20', value: 22}
4: {key: '14', value: 15}
5: {key: '21', value: 31}
6: {key: '17', value: 28}
7: {key: '32', value: 7}
8: {key: '8', value: 20}
9: {key: '15', value: 25}
10: {key: 'null', value: 61}
11: {key: '23', value: 28}
12: {key: '18', value: 39}
13: {key: '9', value: 15}
14: {key: '29', value: 8}
15: {key: '27', value: 13}
16: {key: '7', value: 5}
17: {key: '33', value: 3}
18: {key: '11', value: 12}
19: {key: '13', value: 24}
20: {key: '24', value: 29}
21: {key: '10', value: 12}
22: {key: '19', value: 24}
23: {key: '22', value: 32}
24: {key: '1', value: 4}
25: {key: '26', value: 17}
26: {key: '28', value: 15}
27: {key: '25', value: 27}
28: {key: '34', value: 1}
29: {key: '31', value: 1}
30: {key: '4', value: 4}
31: {key: '3', value: 7}
32: {key: '12', value: 14}
33: {key: '5', value: 3}
34: {key: '2', value: 5}
Now I wanted to sort the data in ascending order using key so that null values will come first. Notice the data also has null values. I used below formula to sort the data:
tisData.sort(function (a, b) {
return a.key - b.key;
});
I got below results:
0: {key: '1', value: 4}
1: {key: '2', value: 5}
2: {key: '3', value: 7}
3: {key: '4', value: 4}
4: {key: '5', value: 3}
5: {key: '6', value: 12}
6: {key: '7', value: 5}
7: {key: '8', value: 20}
8: {key: '9', value: 15}
9: {key: '10', value: 12}
10: {key: '11', value: 12}
11: {key: '12', value: 14}
12: {key: '13', value: 24}
13: {key: '14', value: 15}
14: {key: '15', value: 25}
15: {key: '16', value: 30}
16: {key: '17', value: 28}
17: {key: '18', value: 39}
18: {key: '19', value: 24}
19: {key: '20', value: 22}
20: {key: '21', value: 31}
21: {key: '22', value: 32}
22: {key: '23', value: 28}
23: {key: '24', value: 29}
24: {key: '25', value: 27}
25: {key: '26', value: 17}
26: {key: '27', value: 13}
27: {key: '28', value: 15}
28: {key: '29', value: 8}
29: {key: '30', value: 9}
30: {key: '32', value: 7}
31: {key: 'null', value: 61}
32: {key: '31', value: 1}
33: {key: '33', value: 3}
34: {key: '34', value: 1}
If you see, last 4-5 sorted values are giving wrong order. Can somebody please tell me what is wrong in here and what is the correct piece of code I can use to sort it and get null values at first place?