Drill

ProblemsJavaScript › orders

Split an order across warehouses

mediumordersJavaScript

Fulfilment needs the order regrouped by the warehouse each line ships from, so it can raise one pick list per site.

splitByWarehouse(rows: list<Row>) → map<string, list<string>>

Solve it in the editor →

Where you start

function splitByWarehouse(rows) {
  
}

Worked examples

CallResult
splitByWarehouse([{"sku":"A1","warehouse":"IST"},{"sku":"B2","warehouse":"ANK"},{"sku":"C3","warehouse":"IST"}]){"IST":["A1","C3"],"ANK":["B2"]}
splitByWarehouse([{"sku":"A1","warehouse":"IST"}]){"IST":["A1"]}
splitByWarehouse([]){}
splitByWarehouse([{"sku":"X","warehouse":"IZM"},{"sku":"X","warehouse":"IZM"}]){"IZM":["X","X"]}

Hint

A map from code to a growing list. Create the list the first time you meet a code.

Reference solution in JavaScript
function splitByWarehouse(rows) {
  const result = {};
  for (const r of rows) {
    if (!result[r.warehouse]) result[r.warehouse] = [];
    result[r.warehouse].push(r.sku);
  }
  return result;
}

The same problem in another language

More orders problems in JavaScript