数据看起来像这样
[{time: '09:00', 'level':'x3', 'type':'ae'}
time: '10:00', 'level':'x6', 'type':'fe'}
time: '09:00', 'level':'y3', 'type':'hy'}
time: '11:00', 'level':'z3', 'type':'hy'}]
我想要得到的结果: 按时间 - 09:00 进行过滤,并为相同类型创建分割数组。
结果示例:
{"levels": [ "x3","y3"],"types": ["ae","hy"]}
我可以用三个函数(过滤器和 map )来完成此操作,但我想链接它们。是否可以以更优雅的方式实现?
提前致谢。
最佳答案
注意:结果将是一个包含两个数组的对象。要获取该对象,您可以使用reduce
,如下所示:
var arr = [
{time: '09:00', 'level':'x3', 'type':'ae'},
{time: '10:00', 'level':'x6', 'type':'fe'},
{time: '09:00', 'level':'y3', 'type':'hy'},
{time: '11:00', 'level':'z3', 'type':'hy'}
];
var result = arr.filter(o => o.time === '09:00')
.reduce((acc, o) => {
acc.levels.push(o.level);
acc.types.push(o.type);
return acc;
}, {levels: [], types: []});
console.log(result);
关于javascript - 映射和过滤链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42474743/