sort.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. var result = [];
  2. var type = true;
  3. function sort(array , column , i) {
  4. let data = {};
  5. data['0']='';data['1']='';data['2']='';data['3']='';data['4']='';data['5']='';data['6']='';data['7']='';data['8']='';
  6. data['9']='';data['a']='';data['b']='';data['c']='';data['d']='';data['e']='';data['f']='';data['g']='';data['h']='';
  7. data['i']='';data['j']='';data['k']='';data['l']='';data['m']='';data['n']='';data['o']='';data['p']='';data['q']='';
  8. data['r']='';data['s']='';data['t']='';data['u']='';data['v']='';data['w']='';data['x']='';data['y']='';data['z']='';
  9. data['A']='';data['B']='';data['C']='';data['D']='';data['E']='';data['F']='';data['G']='';data['H']='';data['I']='';
  10. data['J']='';data['K']='';data['L']='';data['M']='';data['N']='';data['O']='';data['P']='';data['Q']='';data['R']='';
  11. data['S']='';data['T']='';data['U']='';data['V']='';data['W']='';data['X']='';data['Y']='';data['Z']='';
  12. array.forEach(function (obj) {
  13. if (!data[obj[column].charAt(i)]) data[obj[column].charAt(i)] = [obj];
  14. else data[obj[column].charAt(i)].push(obj);
  15. });
  16. let recursion=[];
  17. for (let key in data){
  18. if (!data[key]){
  19. delete data[key];
  20. continue;
  21. }
  22. if (data[key].length > 1){
  23. if ( !(!data[key].some(function (value, index) {
  24. return value[column] !== data[key][0][column];
  25. }))){
  26. recursion.push(key);
  27. }
  28. }
  29. }
  30. if (recursion.length > 0){
  31. i++;
  32. recursion.forEach(function (key) {
  33. data[key] = this.sort(data[key] ,column , i);
  34. });
  35. }
  36. return data;
  37. }
  38. function sortInit(array, column ,type='up', i=0 ) {
  39. result = [];
  40. if (!Array.isArray(column)) column = [column];
  41. if (type === 'up') this.type = true;
  42. else this.type = false;
  43. let columnName = column[0];
  44. column.splice(0,1);
  45. merge(sort(array, columnName, i), column);
  46. return result;
  47. }
  48. function merge(object, subordinate = []) {
  49. for (let key in object){
  50. if (Array.isArray(object[key])){
  51. if (object[key].length > 1 && subordinate.length > 0){
  52. let subordinateName = subordinate[0];
  53. subordinate.splice(0,1);
  54. object[key] = merge(sort(object[key], subordinateName, 0), subordinate);
  55. }
  56. if (this.type) result.push.apply(result,object[key]);
  57. else result.unshift.apply(result,object[key]);
  58. }else merge(object[key]);
  59. }
  60. }