繁体   English   中英

JavaScript 将对象数组减少到 object 字典

[英]JavaScript Reduce Array of objects to object dictionary

我已经在 SO 上阅读了这个答案,试图了解我哪里出错了,但还没有完全到达那里。

我有这个 function:

get() {
    var result = {};

    this.filters.forEach(filter => result[filter.name] = filter.value);

    return result;
}

它变成了这样:

[
    { name: "Some", value: "20160608" }
]

对此:

{ Some: "20160608" }

我想,这正是reduce的用途,我有一个数组,我想在它的末尾有一个值。

所以我想到了这个:

this.filters.reduce((result, filter) => {
    result[filter.name] = filter.value;
    return result;
});

但这不会产生正确的结果。

1) 我可以在这里使用 Reduce 吗?

2)为什么它不产生正确的结果。

据我了解,第一次迭代的结果将是一些描述的空 object,但它是数组本身。

那么,您将如何在第一次迭代中重新定义它 - 这些想法让人感觉在这种情况下它是不正确的!

将初始值设置为对象

this.filters = this.filters.reduce((result, filter) => {
    result[filter.name] = filter.value;
    return result;
},{});
//-^----------- here

 var filters = [{ name: "Some", value: "20160608" }]; filters = filters.reduce((result, filter) => { result[filter.name] = filter.value; return result; }, {}); console.log(filters);

 var filters = [{ name: "Some", value: "20160608" }]; filters = filters.reduce((result, {name, value}= filter) => (result[name] = value, result), {}); console.log(filters);

自 2019 年(ES2019)以来,您可以使用 go 和Object.fromEntries()但您需要先进行 map 阵列。

const filtersObject = Object.fromEntries(filters.map(({ name, value }) => [name, value])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM