Advertisement
Guest User

All That Luggage

a guest
May 18th, 2018
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.03 KB | None | 0 0
  1. function allThatLuggage(arr) {
  2. let sorting = arr.pop();
  3. let luggages = {};
  4. for (let line of arr) {
  5. let [name, luggage, isFood, isDrink, isFragile, weight, transport] = line.split(/\.*\*\.*/g);
  6.  
  7. if (!luggages.hasOwnProperty(name)) {
  8. luggages[name] = {};
  9. }
  10.  
  11. if (!luggages[name].hasOwnProperty(luggage)) {
  12. luggages[name][luggage] = {
  13. kg: Number(weight),
  14. fragile: isFragile,
  15. type: isFood == "true" ? "food" : isDrink == "true" ? "drink" : "other",
  16. transferredWith: transport
  17. };
  18. }
  19. }
  20.  
  21. let result = {};
  22. switch (sorting){
  23. case "luggage name":
  24. for (let key of Object.keys(luggages)) {
  25. let sorted = Object.keys(luggages[key]).sort((a,b) => a.localeCompare(b));
  26. for (let innerKey of sorted) {
  27. if(!result.hasOwnProperty(key)){
  28. result[key] = {};
  29. }
  30.  
  31. if(!result[key].hasOwnProperty(innerKey)){
  32. result[key][innerKey] = luggages[key][innerKey];
  33. }
  34. }
  35. }
  36. return JSON.stringify(result);
  37. case "weight":
  38. for (let key of Object.keys(luggages)) {
  39. let sorted = Object.keys(luggages[key]).sort((a,b) => orderByWeight(a,b,key));
  40. for (let innerKey of sorted) {
  41. if(!result.hasOwnProperty(key)){
  42. result[key] = {};
  43. }
  44.  
  45. if(!result[key].hasOwnProperty(innerKey)){
  46. result[key][innerKey] = luggages[key][innerKey];
  47. }
  48. }
  49. }
  50. return JSON.stringify(result);
  51. }
  52.  
  53. return JSON.stringify(luggages);
  54.  
  55. function orderByWeight(a,b,key) {
  56. let weightA = luggages[key][a].kg;
  57. let weightB = luggages[key][b].kg;
  58.  
  59. return weightA - weightB;
  60. }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement