MediumPro challengeJavaScriptTypeScript

Sort & Filter List

ReactArraysData

Implement solve(items, { filterBy, sortBy, order }):

  • Filter: keep items where item[filterBy.key] === filterBy.value (skip if no filter).
  • Sort: by sortBy key, order is 'asc' or 'desc'.
  • Return array of items.

Sample tests

Test #1Sort asc
Input: [[{"x":3},{"x":1},{"x":2}],{"order":"asc","sortBy":"x"}]
Output: [{"x":1},{"x":2},{"x":3}]
Test #2Filter + sort
Input: [[{"k":1,"t":"a"},{"k":2,"t":"a"},{"k":3,"t":"b"}],{"order":"desc","sortBy":"k","filterBy":{"key":"t","value":"a"}}]
Output: [{"k":2,"t":"a"},{"k":1,"t":"a"}]
Test #3Sort desc by age
Input: [[{"id":1,"age":20},{"id":2,"age":30}],{"order":"desc","sortBy":"age"}]
Output: [{"id":2,"age":30},{"id":1,"age":20}]
Test #4Filter only
Input: [[{"a":1,"t":"x"},{"a":2,"t":"y"},{"a":3,"t":"x"}],{"filterBy":{"key":"t","value":"x"}}]
Output: [{"a":1,"t":"x"},{"a":3,"t":"x"}]
Test #5Empty list
Input: [[],{"order":"asc","sortBy":"a"}]
Output: []