Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function allThatLuggage(arr) {
- let sorting = arr.pop();
- let luggages = {};
- for (let line of arr) {
- let [name, luggage, isFood, isDrink, isFragile, weight, transport] = line.split(/\.*\*\.*/g);
- if (!luggages.hasOwnProperty(name)) {
- luggages[name] = {};
- }
- if (!luggages[name].hasOwnProperty(luggage)) {
- luggages[name][luggage] = {
- kg: Number(weight),
- fragile: isFragile,
- type: isFood == "true" ? "food" : isDrink == "true" ? "drink" : "other",
- transferredWith: transport
- };
- }
- }
- let result = {};
- switch (sorting){
- case "luggage name":
- for (let key of Object.keys(luggages)) {
- let sorted = Object.keys(luggages[key]).sort((a,b) => a.localeCompare(b));
- for (let innerKey of sorted) {
- if(!result.hasOwnProperty(key)){
- result[key] = {};
- }
- if(!result[key].hasOwnProperty(innerKey)){
- result[key][innerKey] = luggages[key][innerKey];
- }
- }
- }
- return JSON.stringify(result);
- case "weight":
- for (let key of Object.keys(luggages)) {
- let sorted = Object.keys(luggages[key]).sort((a,b) => orderByWeight(a,b,key));
- for (let innerKey of sorted) {
- if(!result.hasOwnProperty(key)){
- result[key] = {};
- }
- if(!result[key].hasOwnProperty(innerKey)){
- result[key][innerKey] = luggages[key][innerKey];
- }
- }
- }
- return JSON.stringify(result);
- }
- return JSON.stringify(luggages);
- function orderByWeight(a,b,key) {
- let weightA = luggages[key][a].kg;
- let weightB = luggages[key][b].kg;
- return weightA - weightB;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement