JS如何改善此Arrary-> Object函数

时间:2019-05-22 15:47:01

标签: javascript ecmascript-6

我正在尝试从希望用作新对象键的值数组中构建一个空数组对象。

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

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

    return filterObj;
}

我想提高我的ES6知识。有人能整齐地做到这一点吗?

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

您也可以使用新的Object.fromEntries(),但请确保选中browser compatibility。结合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;}

答案 2 :(得分:0)

如果您对ES6以后的版本感到满意,请使用Object.fromEntries

Object.fromEntries(FILTER.map(key => [key, []]))