Javascript react本机redux嵌套数组缩减器

Javascript react本机redux嵌套数组缩减器,javascript,arrays,redux,Javascript,Arrays,Redux,我正在学习为数组编写减缩器。例如,其中一个约简将数组元素从整数更改为数组 原始状态: 行动: 新国家: 我正在尝试编写一个reducer,它将根据第一个数组的条件更改子数组的第二个元素。(例如,如果子阵列的第一个元素大于3,则将第二个元素更改为1) 到目前为止,我已经(没有那么多我卡住了): 谢谢你的建议 像这样 case SET_BIT: return state.map(i => (i[0] > 3 ? [i[0], i[1] + 1] : i)); 不过,这有点奇怪/危险

我正在学习为数组编写减缩器。例如,其中一个约简将数组元素从整数更改为数组

原始状态: 行动: 新国家: 我正在尝试编写一个reducer,它将根据第一个数组的条件更改子数组的第二个元素。(例如,如果子阵列的第一个元素大于
3
,则将第二个元素更改为
1

到目前为止,我已经(没有那么多我卡住了):

谢谢你的建议

像这样

case SET_BIT:
  return state.map(i => (i[0] > 3 ? [i[0], i[1] + 1] : i));
不过,这有点奇怪/危险。如果
SET\u BIT
被调度,当该减速机的状态仍然是平面阵列时会发生什么?然后上述代码将崩溃。然后,您必须执行以下操作:

case SET_BIT:
  return state.map(i => (
    Array.isArray(i) && i[0] > 3
      ? [i[0], i[1] + 1]
      : i
  ));
我不知道你在这里尝试做什么的细节,但一般来说,我认为最好保持减速器状态的结构一致。我倾向于在redux存储的状态中避免嵌套结构,因为我试图尽可能地使redux存储的状态规范化。这使得减速器更容易维护。如果我需要为我的视图嵌套内容,我通常在选择器中这样做


但是,我同样缺乏背景知识,因此不确定这些建议是否与您相关。:-)

谢谢-我下班后会试试的。基本上,我正在测试一些简单的场景来学习,因为我真正想做的是我有一个数字数组(显示在网格上),但是我需要指出是否显示了每个网格元素/数字(开/关)-这就是为什么我认为这是表示它的最佳方式初始状态如下,其中所有数字都隐藏:[[number,0],[number,0],[number,0],…]所以当我想显示任何元素时,我只需将0改为1。这是最好的组织方式吗?
[[0, 0], [3, 0], [5, 0], [3, 0], [9, 0], [8, 0]]
[[0, 0], [3, 0], [5, 1], [3, 0], [9, 1], [8, 1]]
case SET_BIT:
      return state.map(i => (i[0] > 3 ? ??? : i));
case SET_BIT:
  return state.map(i => (i[0] > 3 ? [i[0], i[1] + 1] : i));
case SET_BIT:
  return state.map(i => (
    Array.isArray(i) && i[0] > 3
      ? [i[0], i[1] + 1]
      : i
  ));