zl程序教程

您现在的位置是:首页 >  前端

当前栏目

[Javascript] Querying an Immutable.js Map()

JavaScriptJSMap an Immutable
2023-09-14 08:59:20 时间

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);