JS Как я могу улучшить эту Arrary -> функцию объекта - PullRequest
2 голосов
/ 22 мая 2019

Я пытаюсь построить объект из пустых массивов из массива значений, которые я хочу использовать в качестве новых ключей объекта.

const FILTERS = ['foo', 'bar', 'baz']
createFilteringObject() === { foo: [], bar: [], baz: []}
function createFilteringObject() {
    const filterObj = {}

    for (const filterCategory of FILTERS) {
        filterObj[filterCategory] = [];
    }

    return filterObj;
}

Я хочу улучшить свой ES6знания.У кого-нибудь есть аккуратный способ сделать это в одну строку?

Ответы [ 3 ]

2 голосов
/ 22 мая 2019

FILTERS.reduce((a,b) => Object.assign(a, { [b]: []}), {})

0 голосов
/ 22 мая 2019

Если вы согласны с post-ES6, используйте Object.fromEntries:

Object.fromEntries(FILTER.map(key => [key, []]))
0 голосов
/ 22 мая 2019

Вы также можете использовать новый Object.fromEntries () , но обязательно проверьте совместимость браузера . Этот в сочетании с Array.map () может сделать работу:

const FILTERS = ['foo', 'bar', 'baz'];

let res = Object.fromEntries(FILTERS.map(x => [x, []]));

console.log(res);
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...