Javascript react本机redux嵌套数组缩减器
我正在学习为数组编写减缩器。例如,其中一个约简将数组元素从整数更改为数组 原始状态: 行动: 新国家: 我正在尝试编写一个reducer,它将根据第一个数组的条件更改子数组的第二个元素。(例如,如果子阵列的第一个元素大于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)); 不过,这有点奇怪/危险
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
));