zoukankan      html  css  js  c++  java
  • [Javascript] Querying an Immutable.js Map()

    Learn how to query an Immutable.Map() using get, getIn, has, includes, find, first and last. These are powerful operators that make finding data in an object graph pain free.

    has, includes, contains:

    //has()
    var map = Immutable.Map({a: '10'});
    console.log(map.has("a")); //true
    
    //includes / contains
    var todo = {
      id: +new Date(),
      name: "name",
      content: "content"
    };
    var todo2 = {
      id: +new Date(),
      name: "name",
      content: "content"
    };
    
    var todos = Immutable.Map();
    todos = todos.set(todo.id, todo);
    console.log(todos.contains(todo)); //true
    console.log(todos.contains(todo2)); //false

    first(), getIn()

    // first(), getIn()
    
    //Create tow Maps
    var todos = Immutable.Map();
    var todos2 = Immutable.Map();
    
    //Create new Data
    var todo1 = {
      id: +new Date(),
      name: "name",
      content: "content"
    };
    var todo2 = {
      id: +new Date()+1000,
      name: "name",
      content: "content"
    };
    var todo3 = {
      id: +new Date()+3000,
      name: "name",
      content: "content"
    };
    var todo4 = {
      id: +new Date()+4000,
      name: "name",
      content: "content"
    };
    
    //Add data to the map
    todos =todos.set(todo1.id, todo1);
    todos= todos.set(todo2.id, todo2);
    todos2=todos2.set(todo3.id, todo3);
    todos2=todos2.set(todo4.id, todo4);
    
    //Wrap maps in another map
    var multipleTodoStates = Immutable.Map({
        "todo1": todos,
        "todo2": todos2
    });
    
    //Get first todo's id in the first map
    const todoID = todos.first().id; 
    console.log(todoID);
    //Try to find the first todo in deep map
    //"todo1" is the first level map
    //then downto the second level to find the id
    //If nohting return null
    var res = multipleTodoStates.getIn(["todo1", todoID], null);
    var res2 = multipleTodoStates.getIn(["todo2", todoID], null);
    console.log(res);
    console.log(res2);

    find():

    //find()
    var todo = {
      id: +new Date(),
      name: "Wan",
      content: "Finish it"
    };
    
    var todos = Immutable.Map();
    todos = todos.set(todo.id, todo);
    
    var foundTodo = todos.find( (t)=>{
      return t.id === todo.id 
    }, null, null) ;
    
    console.log(foundTodo.id);
  • 相关阅读:
    从 LengthFieldBasedFrameDecoder 看 netty 处理拆包
    nacos 服务的实例变化
    nacos 中的服务和实例
    idea 编译 brooklin
    idea 编译 netty 源码
    consumeQueue 和 indexFile 文件
    rocketMQ 事务消息
    特殊符号存入mysql数据库时报错:Incorrect string value: 'xF0x9Fx98x84xF0x9F的解决方法
    面试中常用排序算法的python实现和性能分析
    获取编写代码所在文件的上级文件和上上级文件的相对路径
  • 原文地址:https://www.cnblogs.com/Answer1215/p/4890099.html
Copyright © 2011-2022 走看看