微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

FlatMap与Reduce进行映射和过滤-是否推荐使用另一个?

如何解决FlatMap与Reduce进行映射和过滤-是否推荐使用另一个?

根据this SO threadflatMapreduce的建议,当一个人需要在一组对象上进行映射和过滤时,尤其是在它们希望避免多次遍历整个集合时,尤其如此。就我个人而言,我更喜欢使用flatMap,因为我认为它更易于阅读,但这当然完全是主观的。除了flatMap的浏览器兼容性问题之外,通常还是推荐一种方法或该方法优于另一种方法(也许是由于(但不限于)性能或可读性的原因)?

更新:以下是flatMap过滤的引用答案中的一个示例:

var options = [{
    name: 'One',assigned: true
  },{
    name: 'Two',assigned: false
  },{
    name: 'Three',];

var assignees = options.flatMap((o) => (o.assigned ? [o.name] : []));
console.log(assignees);

document.getElementById("output").innerHTML = JSON.stringify(assignees);
<h1>Only assigned options</h1>
<pre id="output"> </pre>

解决方法

两者都不是。对于映射和过滤,您应该使用mapfilter

var assignees = options.filter(o => o.assigned).map(o => o.name);

更简单易读,它直接表达了您的意图。清晰无比。

如果您关心性能,请始终进行基准测试,以查看对实际案例的实际影响-但不要过早优化。

,

在这种情况下,我将使用减少值。

var options = [{
    name: 'One',assigned: true
  },{
    name: 'Two',assigned: false
  },{
    name: 'Three',];

var assignees = options.reduce((results,item) => {
  if (item.assigned) {
    results.push(item.name);
  }
  return results;
},[]);
console.log(assignees);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?