javascript - 使用不变性助手修改数组的每个值

标签 javascript arrays reactjs immutability

我正在努力找出使用 immutability helper 修改对象数组中的每个值的最佳实践。 .

例如,如果我的州有这样的情况:

this.state = {
    items: [
        {
            name: "test",
            subItems: [
                {val: false}, {val: true}, {val: false}
            ]
        },
        {
            name: "test2",
            subItems: [
                {val: true}, {val: true}, {val: false}
            ]
        }
    ]
}

我想将每个 val 设置为 false,我该怎么做。

我可以一次做一个,但一定有更好的方法:

let elements = update(this.state.items, {
  [idx1]:{
    subItems:{
      [idx2]:{
        val: {
          $set: false
        }
      }
    }
  }
});

最佳答案

这当然是可能的,但乍一看根本不可读或无法理解。

const nextState = update(state, {
    items: {
    $apply: (items) => {
        return items.map(item => {
        return update(item, {
            subItems: {
            $apply: (subItems) => {
                return subItems.map(subItem => {
                return update(subItem, {
                    val: {
                    $set: false
                  }
                })
              })
            }
          }
        })
      })
    }
  }
});

关于javascript - 使用不变性助手修改数组的每个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41730417/

相关文章:

python - 在 pandas 数据帧上应用条件来过滤数组时出现 FutureWarning

javascript - react 图表显示纯黑色

javascript - 位置 : absolute causing element to disappear

javascript - React Router、Redux 和异步 API 调用

javascript - 使用变量作为多维对象中的键

javascript - 获取 jQuery 中选定复选框的值

javascript - 如何将 JavaScript 对象转置为键/值数组

java - 多维数组的使用

javascript - React - 加载图像时状态错误

ruby-on-rails - rails 4 + ReactJS : "SyntaxError: cannot have an implicit value in an implicit object"