From b7d8b14a6c575c02403113c60467be6350a85963 Mon Sep 17 00:00:00 2001 From: Kunal Date: Wed, 30 Oct 2019 13:40:02 -0700 Subject: [PATCH 1/2] getAvailableTimes and zipObj --- questions/getAvailTimes-a.js | 10 ++++++++++ questions/getAvailTimes.js | 17 +++++++++++++++++ questions/zipObj-a.js | 6 ++++++ questions/zipObj.js | 3 +++ 4 files changed, 36 insertions(+) create mode 100644 questions/getAvailTimes-a.js create mode 100644 questions/getAvailTimes.js create mode 100644 questions/zipObj-a.js create mode 100644 questions/zipObj.js diff --git a/questions/getAvailTimes-a.js b/questions/getAvailTimes-a.js new file mode 100644 index 0000000..0dbc4c0 --- /dev/null +++ b/questions/getAvailTimes-a.js @@ -0,0 +1,10 @@ +function getAvailTimes(input) { + return input.reduce((acc, curr) => { + const {name, hrs} = curr; + hrs.forEach(hr => { + if(acc[hr]) acc[hr].push(name); + else acc[hr] = [name]; + }); + return acc; + }, {}); +} \ No newline at end of file diff --git a/questions/getAvailTimes.js b/questions/getAvailTimes.js new file mode 100644 index 0000000..ee022a5 --- /dev/null +++ b/questions/getAvailTimes.js @@ -0,0 +1,17 @@ +/** + * @param {Array of Objects} input - Eg.: + * [ + * { name: 'Joe', hrs: ['10', '11', '12'] }, + * { name: 'Amy', hrs: ['11'] }, + * ... + * ] + * Think of hrs as starting time where user is available that hour. + * + * @return {Object} - We want to return an object of all available hours + * mapped to all users who are available in that hour. Eg.: + * { + * '10': ['Joe'], + * '11': ['Joe', 'Amy'], + * '12': ['Joe'], + * } + */ diff --git a/questions/zipObj-a.js b/questions/zipObj-a.js new file mode 100644 index 0000000..2393d5c --- /dev/null +++ b/questions/zipObj-a.js @@ -0,0 +1,6 @@ +function zipObj(list1, list2) { + return list1.reduce((result, curr, index) => { + result[curr] = list2[index]; + return result; + }, {}); + } \ No newline at end of file diff --git a/questions/zipObj.js b/questions/zipObj.js new file mode 100644 index 0000000..ab69cb4 --- /dev/null +++ b/questions/zipObj.js @@ -0,0 +1,3 @@ +//write a function that returns a new object out of a list of keys and a list of values + +//zipObj(['a', 'b', 'c'], [1, 2, 3]) {a: 1, b: 2, c: 3} \ No newline at end of file From 6b9b292ab480b3ebc418d992bcb587008cb213e6 Mon Sep 17 00:00:00 2001 From: Kunal Date: Wed, 30 Oct 2019 13:42:40 -0700 Subject: [PATCH 2/2] removed getAvailTimes --- questions/getAvailTimes-a.js | 10 ---------- questions/getAvailTimes.js | 17 ----------------- 2 files changed, 27 deletions(-) delete mode 100644 questions/getAvailTimes-a.js delete mode 100644 questions/getAvailTimes.js diff --git a/questions/getAvailTimes-a.js b/questions/getAvailTimes-a.js deleted file mode 100644 index 0dbc4c0..0000000 --- a/questions/getAvailTimes-a.js +++ /dev/null @@ -1,10 +0,0 @@ -function getAvailTimes(input) { - return input.reduce((acc, curr) => { - const {name, hrs} = curr; - hrs.forEach(hr => { - if(acc[hr]) acc[hr].push(name); - else acc[hr] = [name]; - }); - return acc; - }, {}); -} \ No newline at end of file diff --git a/questions/getAvailTimes.js b/questions/getAvailTimes.js deleted file mode 100644 index ee022a5..0000000 --- a/questions/getAvailTimes.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * @param {Array of Objects} input - Eg.: - * [ - * { name: 'Joe', hrs: ['10', '11', '12'] }, - * { name: 'Amy', hrs: ['11'] }, - * ... - * ] - * Think of hrs as starting time where user is available that hour. - * - * @return {Object} - We want to return an object of all available hours - * mapped to all users who are available in that hour. Eg.: - * { - * '10': ['Joe'], - * '11': ['Joe', 'Amy'], - * '12': ['Joe'], - * } - */