javascript - 映射和过滤链接

标签 javascript functional-programming

数据看起来像这样

[{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/

相关文章:

javascript - 如何仅使用一个 <a> 标签编写这个 Angular HTML?

javascript - npm 全局包 : Reference content files from package

javascript - 如何将 polymer 纸标签对齐到右侧

haskell - 在列表中移动并保持状态

haskell - FRP - 事件流和信号 - 仅使用信号会丢失什么?

javascript - 获取每个offsetParent或总offSetTop和总offSetLeft

Javascript document.open异步?

haskell - 检查 Haskell 中函数的内部结构

clojure - 什么时候使用 Clojure 的闭包?

javascript - 为什么不认为这种纯函数的实现具有外部依赖性?