代码之家  ›  专栏  ›  技术社区  ›  Sanjay A

使用immutableJs更新OrderMap中具有特定值的所有键

  •  0
  • Sanjay A  · 技术社区  · 8 年前

    我试图找到更好的方法,使用immutableJs迭代所有键。 (基本上,我想一次更新地图中的所有值。) 尝试更改tdata。setIn([tdata.keySeq(),“comments”],值=>新评论;setIn,UpdateIn-不可变的深层持久更改方法

    let data = [
      {
        id: "1",
        isSelected: false,
        isStarred: false,
        comments: “comments”,
        title: “Title1”,
        userName: “uName”
      },
      {
        id: "2",
        isSelected: false,
        isStarred: false,
       comments: “comments”,
           title: “Title1”,
        userName: “uName”
      },
      {
        id: "3",
        isSelected: false,
        isStarred: false,
        comments: “comments”,
        title: “Title1”,
        userName: “uName”
      },
      {
        id: "4",
        isSelected: false,
        isStarred: false,
        comments: “comments”,
        title: “Title1”,
        userName: “uName”
      },
      {
        id: "5",
        isSelected: false,
        isStarred: false,
        comments: “comments”,
        title: “Title1”,
        userName: “uName”
      }
    ]
    
    let tData = OrderedMap();
       for (let i = 0; i < data.length; i++) {
       let values = Map(data[i]);
       tData = tData.set(data[i].id, values);
    
    }
    
    tdata.updateIn([“2”, "comments"], value =>”new Comment”);
    

    我没有明确指定key=“2”,而是希望更新整个地图 谢谢你的帮助

    1 回复  |  直到 8 年前
        1
  •  0
  •   Simon Baumgardt-Wellander    8 年前

    听起来你想使用 map 作用

    const data = fromJS({
      a: {comment: "1"},
      b: { comment: "2"},
      c: {count: "3"}
    );
    const newData = data.map((key, value) => {
      if (value.get("comment") == "2")
        return value.set("comment", "new comment")
      else
        return value
    });
    
    推荐文章