Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const allLanguages = [ 'ES', 'EN', 'DE' ]
- const usedLanguages = [ { id: 1, lang: 'EN' } ]
- const availableLanguages = [ 'ES', 'DE' ]
- const all = new Set(allLanguages);
- const used = new Set(usedLanguages.map(({lang}) => lang));
- const availableLanguages = setDifference(all, used);
- const setDifference = (a, b) => new Set([...a].filter(x => !b.has(x)));
- const not = fn => x => !fn(x);
- const isIn = set => x => set.has(x);
- const setDifference = (a, b) => new Set([...a].filter(not(isIn(b))));
- const setDifference = (a, b) => {
- const result = new Set(a);
- b.forEach(x => result.delete(x));
- return result;
- }
- const availableLanguages = all.difference(used)
- function* difference(array, excludes) {
- for (let x of array)
- if (!excludes.includes(x)) yield x;
- }
- console.log([...difference(allLanguages, usedLanguages)]);
- const dict = Object.assign({},
- ...usedLanguages.map(({lang}) => ({[lang]: true})));
- const availableLanguages = allLanguages.filter(lang => lang in dict);
- const dict = usedLanguages.reduce((obj, {lang}) => {
- obj[lang] = true;
- return obj;
- }, {});
- const dict = usedLanguages.reduce((obj, {lang}) => (obj[lang] = true, obj), {});
- const dict = {};
- for (x of usedLanguages) {
- dict[x.lang] = true;
- }
- availableLanguages = allLanguages.filter((lang1) => !usedLanguages.some((lang2) => lang2.lang === lang1))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement