Обновите все ключи с определенным значением в OrderMap, используя immutableJs - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь найти лучший способ перебора всех ключей, используя immutableJs. (По сути, я хотел бы обновить все значения на карте сразу.) Пробовал путем изменения tdata.setIn ([tdata.keySeq (), «comments»], value => ”new Comment”); 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”);

Вместо того, чтобы явно указывать ключ = "2", я ищу обновить всю карту Спасибо за любую помощь

1 Ответ

0 голосов
/ 27 апреля 2018

Звучит так, будто вы хотите использовать функцию 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
});
...