Skip to content

Instantly share code, notes, and snippets.

@zimejin
Created March 16, 2020 19:35
Show Gist options
  • Save zimejin/9b351d70425b594f26e4b0042265d7d2 to your computer and use it in GitHub Desktop.
Save zimejin/9b351d70425b594f26e4b0042265d7d2 to your computer and use it in GitHub Desktop.
Zalando - Coding Test
'use strict';
/* global CustomError, getLikedBrands, getTopBrandsForGender */
function solution(U, N) {
return new Promise((resolve, reject) => {
// Uniq function
const uniq = list => Array.from( new Set(list) )
getLikedBrands(U.id).then(likedBrands => likedBrands.length >= N
// If liked brands are enough
? resolve(
likedBrands
.slice(0, N)
.map(i => i.name)
)
// If not enough, get more brands
: getTopBrandsForGender(U.gender).then(topBrands => {
// Concat and unify brands list
const allBrands = uniq(
[...likedBrands, ...topBrands]
.map(i => i.name)
)
allBrands.length >= N
// If all brands are enough
? resolve(allBrands.slice(0, N))
// If still not enough
: reject(new CustomError('Not enough data'))
})
)
});
}
@zimejin
Copy link
Author

zimejin commented Apr 15, 2021

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment