首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript如何将对象数组减少到对象字典?

JavaScript如何将对象数组减少到对象字典?
EN

Stack Overflow用户
提问于 2018-10-18 00:35:00
回答 1查看 0关注 0票数 0

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

我有这个功能:

代码语言:javascript
复制
get() {
    var result = {};

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

    return result;
}

它变成了这样:

代码语言:javascript
复制
[
    { name: "Some", value: "20160608" }
]

对此:

代码语言:javascript
复制
{ Some: "20160608" }

我想,这正是reduce为了什么,我有一个数组,我想要一个单一的值。

所以我想这个:

代码语言:javascript
复制
this.filters.reduce((result, filter) => {
    result[filter.name] = filter.value;
    return result;
});

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

1)我可以在这里使用Reduce吗? 2)为什么它不能产生正确的结果。

从我的理解,第一次迭代结果将是一些描述的空对象,但它是数组本身。

那么你将如何在第一次迭代中重新定义 - 这些想法激起了在这种情况下不正确的感觉!

EN

回答 1

Stack Overflow用户

发布于 2018-10-18 10:17:21

将初始值设置为对象

代码语言:javascript
复制
this.filters = this.filters.reduce((result, filter) => {
    result[filter.name] = filter.value;
    return result;
},{});
//-^----------- here
代码语言:javascript
复制
var filters = [{
  name: "Some",
  value: "20160608"
}];

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

console.log(filters);
代码语言:javascript
复制
var filters = [{
  name: "Some",
  value: "20160608"
}];

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

console.log(filters);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100005081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档