【发布时间】:2017-06-05 15:06:40
【问题描述】:
如何转换这样的集合,我想过滤掉 show 为 false 的月份并使用函数方法创建一个干净的对象?
var monthsInYearModel = [
{'year':'2016', 'months': [
{name: 'Jan', show: true, num: 0},
{name: 'Feb', show: false, num: 1},
{name: 'Mar', show: true, num: 2}
...until dec...
]}
];
这是我试图通过仅使用 map、filter、reduce 等数组方法创建的结构的示例?
{
'2016':{
'jan':0,
'mar':2,
...until dec...
}
}
这是我的尝试,但我得到的数组太多了
var keyCodeYear = '2016'
var years = monthsInYearModel
.filter( obj => obj.year == keyCodeYear )
.map( obj => obj.months.filter(month => month.show) );
{
[
'2016':[
{name:'jan', num:0 },
{name:'mar', num:2 }
...until dec...
]
]
}
【问题讨论】:
-
您需要
reduce而不是map。map始终是一对一的。但是你想reduce在每一层都变成一个对象。 -
抱歉输出到控制台:S
标签: javascript data-structures functional-programming iteration reduce