Advertisement
Guest User

Untitled

a guest
Jun 25th, 2019
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.43 KB | None | 0 0
  1. const allLanguages = [ 'ES', 'EN', 'DE' ]
  2. const usedLanguages = [ { id: 1, lang: 'EN' } ]
  3.  
  4. const availableLanguages = [ 'ES', 'DE' ]
  5.  
  6. const all = new Set(allLanguages);
  7. const used = new Set(usedLanguages.map(({lang}) => lang));
  8.  
  9. const availableLanguages = setDifference(all, used);
  10.  
  11. const setDifference = (a, b) => new Set([...a].filter(x => !b.has(x)));
  12.  
  13. const not = fn => x => !fn(x);
  14. const isIn = set => x => set.has(x);
  15.  
  16. const setDifference = (a, b) => new Set([...a].filter(not(isIn(b))));
  17.  
  18. const setDifference = (a, b) => {
  19. const result = new Set(a);
  20. b.forEach(x => result.delete(x));
  21. return result;
  22. }
  23.  
  24. const availableLanguages = all.difference(used)
  25.  
  26. function* difference(array, excludes) {
  27. for (let x of array)
  28. if (!excludes.includes(x)) yield x;
  29. }
  30.  
  31. console.log([...difference(allLanguages, usedLanguages)]);
  32.  
  33. const dict = Object.assign({},
  34. ...usedLanguages.map(({lang}) => ({[lang]: true})));
  35.  
  36. const availableLanguages = allLanguages.filter(lang => lang in dict);
  37.  
  38. const dict = usedLanguages.reduce((obj, {lang}) => {
  39. obj[lang] = true;
  40. return obj;
  41. }, {});
  42.  
  43. const dict = usedLanguages.reduce((obj, {lang}) => (obj[lang] = true, obj), {});
  44.  
  45. const dict = {};
  46. for (x of usedLanguages) {
  47. dict[x.lang] = true;
  48. }
  49.  
  50. availableLanguages = allLanguages.filter((lang1) => !usedLanguages.some((lang2) => lang2.lang === lang1))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement