zoukankan      html  css  js  c++  java
  • [Immutable.js] Transforming Immutable Data with Reduce

    Immutable.js iterables offer the reduce() method, a powerful and often misunderstood functional operator on which map(), filter(), groupBy(), etc. are built. The concept is simple: reduce transforms your iterable into something else, that's all. The name is misleading as you may or may not actually "reduce" anything. Let's replicate the groupBy() and filter() methods with reduce to illustrate how it works.

    Assume you have a list to todos, each todo with a "completed" prop:

    groupBy() like:

    const todos = Immutable.List([
      {
        id: 1,
        title: "Immutable.js",
        completed: true
      },
      {
        id: 2,
        title: "RxJS",
        completed: false
      },
      {
        id: 3,
        title: "ReactJS",
        completed: false
      }
    ]);
    
    const groupedTodos = todos.reduce( (acc, curr)=>{
      
      let key = curr.completed ? "completed" : "Incompleted";
      
      // Initial value is an Immutable Map object, so use get("completed") to get the Immutable.List(), then push the curr value into it
      let list = acc.get(key).push(curr);
      // Immutable return a new list from last push, so we need to set this list to the initial value
      return acc.set(key, list);
      
    }, Immutable.Map({"completed": Immutable.List(), "Incompleted": Immutable.List()}));
    
    console.log(groupedTodos.get("Incompleted").get(1).title); //"ReactJS"

    filter() like:

    // Get all imcompleted todos
    const filteredTodos = todos.reduce( (acc, curr)=>{
      
      if(!curr.completed){
         acc = acc.push(curr);
      }
      
      return acc;
    }, Immutable.List());
    
    console.log(filteredTodos.get(1).title); // "ReactJS"
  • 相关阅读:
    PE文件捆绑实现二:(远程线程注入)
    C++中Vector清空
    ttrss更新到最新版本后发访问非80和443端口规避
    Git配置https_proxy访问github失败
    Haproxy配置拦截指定src的连接
    synology git管理程序添加
    ActiveMQ深入浅出系列 (一)
    sl4fj日志级别
    HTTP上传文件解析
    linux下jcmd无法获取jvmdump
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5206013.html
Copyright © 2011-2022 走看看