React Native冗余if-else代码优化:用循环精简重复逻辑
精简重复if-else的实现方案
先假设你的冗余代码逻辑是根据End值,依次传入对应数量的found.ScoreEndN和ScoretoStoreN参数调用updateScores,比如End=3时传入ScoreEnd1、ScoreEnd2、ScoreEnd3、ScoretoStore1、ScoretoStore2、ScoretoStore3(或成对传入),可以用循环生成参数数组的方式彻底消除重复判断:
方案1:参数按「所有ScoreEnd + 所有ScoretoStore」顺序传入
// 生成ScoreEnd参数列表 const scoreEnds = Array.from({ length: End }, (_, i) => found[`ScoreEnd${i + 1}`]); // 生成ScoretoStore参数列表(假设ScoretoStore是数组或可通过索引访问) const scoreStores = Array.from({ length: End }, (_, i) => ScoretoStore[i + 1]); // 展开参数调用函数 updateScores(...scoreEnds, ...scoreStores);
方案2:参数按「ScoreEnd1 + ScoretoStore1 + ScoreEnd2 + ScoretoStore2」成对传入
如果你的参数顺序是每个回合的分数和存储值成对出现,调整循环逻辑即可:
const params = []; for (let i = 1; i <= End; i++) { params.push(found[`ScoreEnd${i}`], ScoretoStore[i]); } updateScores(...params);
额外优化:边界校验
如果End可能出现非法值(比如0或超出最大回合数),可以加个简单判断避免错误:
const MAX_ROUND = 10; // 替换成你的实际最大回合数 if (End < 1 || End > MAX_ROUND) return; // 上面的循环代码...
注意事项
- 确保
found对象存在ScoreEnd1到ScoreEnd{End}的属性,避免属性不存在导致的undefined - 如果
ScoretoStore是对象而非数组,把ScoretoStore[i]改成ScoretoStore[ScoretoStore${i}]即可
内容的提问来源于stack exchange,提问作者SomeRandomName
相关产品推荐
相关产品推荐

