【问题标题】:Does anyone know how to "clean up" this monstrosity有谁知道如何“清理”这个怪物
【发布时间】:2022-11-03 00:18:38
【问题描述】:

我正在使用 JavaScript 中的 React Native 创建一个应用程序。

我有这个代码。

            let ScoretoStore = (parseInt(TeamAShot) + "A")

            if (End === 2){
                updateScores(ID,found.ScoreEnd1,ScoretoStore)
            } else if (End === 3){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,ScoretoStore)
            } else if (End === 4){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,ScoretoStore)
            } else if (End === 5){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,ScoretoStore)
            } else if (End === 6){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,ScoretoStore)
            } else if (End === 7){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,
                    found.ScoreEnd6,ScoretoStore)
            } else if (End === 8){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,
                    found.ScoreEnd6,found.ScoreEnd7,ScoretoStore)
            } else if (End === 9){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,
                    found.ScoreEnd6,found.ScoreEnd7,found.ScoreEnd8,ScoretoStore)
            } else if (End === 10){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,
                    found.ScoreEnd6,found.ScoreEnd7,found.ScoreEnd8,found.ScoreEnd9,ScoretoStore)
            } else if (End === 11){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,
                    found.ScoreEnd6,found.ScoreEnd7,found.ScoreEnd8,found.ScoreEnd9,found.ScoreEnd10,ScoretoStore)
            } else if (End === 12){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,
                    found.ScoreEnd6,found.ScoreEnd7,found.ScoreEnd8,found.ScoreEnd9,found.ScoreEnd10,
                    found.ScoreEnd11,ScoretoStore)
            } else if (End === 13){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,
                    found.ScoreEnd6,found.ScoreEnd7,found.ScoreEnd8,found.ScoreEnd9,found.ScoreEnd10,
                    found.ScoreEnd11,found.ScoreEnd12,ScoretoStore)
            } else if (End === 14){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,
                    found.ScoreEnd6,found.ScoreEnd7,found.ScoreEnd8,found.ScoreEnd9,found.ScoreEnd10,
                    found.ScoreEnd11,found.ScoreEnd12,found.ScoreEnd13,ScoretoStore)
            } else if (End === 15){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,
                    found.ScoreEnd6,found.ScoreEnd7,found.ScoreEnd8,found.ScoreEnd9,found.ScoreEnd10,
                    found.ScoreEnd11,found.ScoreEnd12,found.ScoreEnd13,found.ScoreEnd14,ScoretoStore)
            } else if (End === 16){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,
                    found.ScoreEnd6,found.ScoreEnd7,found.ScoreEnd8,found.ScoreEnd9,found.ScoreEnd10,
                    found.ScoreEnd11,found.ScoreEnd12,found.ScoreEnd13,found.ScoreEnd14,
                    found.ScoreEnd15,ScoretoStore)
            } else if (End === 17){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,
                    found.ScoreEnd6,found.ScoreEnd7,found.ScoreEnd8,found.ScoreEnd9,found.ScoreEnd10,
                    found.ScoreEnd11,found.ScoreEnd12,found.ScoreEnd13,found.ScoreEnd14,
                    found.ScoreEnd15,found.ScoreEnd16,ScoretoStore)
            } else if (End === 18){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,
                    found.ScoreEnd6,found.ScoreEnd7,found.ScoreEnd8,found.ScoreEnd9,found.ScoreEnd10,
                    found.ScoreEnd11,found.ScoreEnd12,found.ScoreEnd13,found.ScoreEnd14,
                    found.ScoreEnd15,found.ScoreEnd16,found.ScoreEnd17,ScoretoStore)
            } else if (End === 19){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,
                    found.ScoreEnd6,found.ScoreEnd7,found.ScoreEnd8,found.ScoreEnd9,found.ScoreEnd10,
                    found.ScoreEnd11,found.ScoreEnd12,found.ScoreEnd13,found.ScoreEnd14,
                    found.ScoreEnd15,found.ScoreEnd16,found.ScoreEnd17,found.ScoreEnd18,ScoretoStore)
            } else if (End === 20){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,
                    found.ScoreEnd6,found.ScoreEnd7,found.ScoreEnd8,found.ScoreEnd9,found.ScoreEnd10,
                    found.ScoreEnd11,found.ScoreEnd12,found.ScoreEnd13,found.ScoreEnd14,
                    found.ScoreEnd15,found.ScoreEnd16,found.ScoreEnd17,found.ScoreEnd18,found.ScoreEnd19,ScoretoStore)
            } else if (End === 21){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,
                    found.ScoreEnd6,found.ScoreEnd7,found.ScoreEnd8,found.ScoreEnd9,found.ScoreEnd10,
                    found.ScoreEnd11,found.ScoreEnd12,found.ScoreEnd13,found.ScoreEnd14,
                    found.ScoreEnd15,found.ScoreEnd16,found.ScoreEnd17,found.ScoreEnd18,found.ScoreEnd19,
                    found.ScoreEnd20,ScoretoStore)
            } else if (End === 22){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,
                    found.ScoreEnd6,found.ScoreEnd7,found.ScoreEnd8,found.ScoreEnd9,found.ScoreEnd10,
                    found.ScoreEnd11,found.ScoreEnd12,found.ScoreEnd13,found.ScoreEnd14,
                    found.ScoreEnd15,found.ScoreEnd16,found.ScoreEnd17,found.ScoreEnd18,found.ScoreEnd19,
                    found.ScoreEnd20,found.ScoreEnd21,ScoretoStore)
            } else if (End === 23){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,
                    found.ScoreEnd6,found.ScoreEnd7,found.ScoreEnd8,found.ScoreEnd9,found.ScoreEnd10,
                    found.ScoreEnd11,found.ScoreEnd12,found.ScoreEnd13,found.ScoreEnd14,
                    found.ScoreEnd15,found.ScoreEnd16,found.ScoreEnd17,found.ScoreEnd18,found.ScoreEnd19,
                    found.ScoreEnd20,found.ScoreEnd21,found.ScoreEnd22,ScoretoStore)
            } else if (End === 24){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,
                    found.ScoreEnd6,found.ScoreEnd7,found.ScoreEnd8,found.ScoreEnd9,found.ScoreEnd10,
                    found.ScoreEnd11,found.ScoreEnd12,found.ScoreEnd13,found.ScoreEnd14,
                    found.ScoreEnd15,found.ScoreEnd16,found.ScoreEnd17,found.ScoreEnd18,found.ScoreEnd19,
                    found.ScoreEnd20,found.ScoreEnd21,found.ScoreEnd22,found.ScoreEnd23,ScoretoStore)
            } else if (End === 25){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,
                    found.ScoreEnd6,found.ScoreEnd7,found.ScoreEnd8,found.ScoreEnd9,found.ScoreEnd10,
                    found.ScoreEnd11,found.ScoreEnd12,found.ScoreEnd13,found.ScoreEnd14,
                    found.ScoreEnd15,found.ScoreEnd16,found.ScoreEnd17,found.ScoreEnd18,found.ScoreEnd19,
                    found.ScoreEnd20,found.ScoreEnd21,found.ScoreEnd22,found.ScoreEnd23,found.ScoreEnd24,ScoretoStore)
            } else if (End === 26){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,
                    found.ScoreEnd6,found.ScoreEnd7,found.ScoreEnd8,found.ScoreEnd9,found.ScoreEnd10,
                    found.ScoreEnd11,found.ScoreEnd12,found.ScoreEnd13,found.ScoreEnd14,
                    found.ScoreEnd15,found.ScoreEnd16,found.ScoreEnd17,found.ScoreEnd18,found.ScoreEnd19,
                    found.ScoreEnd20,found.ScoreEnd21,found.ScoreEnd22,found.ScoreEnd23,found.ScoreEnd24,found.ScoreEnd25,ScoretoStore)
            } else if (End === 27){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,
                    found.ScoreEnd6,found.ScoreEnd7,found.ScoreEnd8,found.ScoreEnd9,found.ScoreEnd10,
                    found.ScoreEnd11,found.ScoreEnd12,found.ScoreEnd13,found.ScoreEnd14,
                    found.ScoreEnd15,found.ScoreEnd16,found.ScoreEnd17,found.ScoreEnd18,found.ScoreEnd19,
                    found.ScoreEnd20,found.ScoreEnd21,found.ScoreEnd22,found.ScoreEnd23,found.ScoreEnd24,found.ScoreEnd25,
                    found.ScoreEnd26,ScoretoStore)
            } else if (End === 28){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,
                    found.ScoreEnd6,found.ScoreEnd7,found.ScoreEnd8,found.ScoreEnd9,found.ScoreEnd10,
                    found.ScoreEnd11,found.ScoreEnd12,found.ScoreEnd13,found.ScoreEnd14,
                    found.ScoreEnd15,found.ScoreEnd16,found.ScoreEnd17,found.ScoreEnd18,found.ScoreEnd19,
                    found.ScoreEnd20,found.ScoreEnd21,found.ScoreEnd22,found.ScoreEnd23,found.ScoreEnd24,found.ScoreEnd25,
                    found.ScoreEnd26,found.ScoreEnd27,ScoretoStore)
            } else if (End === 29){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,
                    found.ScoreEnd6,found.ScoreEnd7,found.ScoreEnd8,found.ScoreEnd9,found.ScoreEnd10,
                    found.ScoreEnd11,found.ScoreEnd12,found.ScoreEnd13,found.ScoreEnd14,
                    found.ScoreEnd15,found.ScoreEnd16,found.ScoreEnd17,found.ScoreEnd18,found.ScoreEnd19,
                    found.ScoreEnd20,found.ScoreEnd21,found.ScoreEnd22,found.ScoreEnd23,found.ScoreEnd24,found.ScoreEnd25,
                    found.ScoreEnd26,found.ScoreEnd27,found.ScoreEnd28,ScoretoStore)
            } else if (End === 30){
                updateScores(ID,found.ScoreEnd1,found.ScoreEnd2,found.ScoreEnd3,found.ScoreEnd4,found.ScoreEnd5,
                    found.ScoreEnd6,found.ScoreEnd7,found.ScoreEnd8,found.ScoreEnd9,found.ScoreEnd10,
                    found.ScoreEnd11,found.ScoreEnd12,found.ScoreEnd13,found.ScoreEnd14,
                    found.ScoreEnd15,found.ScoreEnd16,found.ScoreEnd17,found.ScoreEnd18,found.ScoreEnd19,
                    found.ScoreEnd20,found.ScoreEnd21,found.ScoreEnd22,found.ScoreEnd23,found.ScoreEnd24,found.ScoreEnd25,
                    found.ScoreEnd26,found.ScoreEnd27,found.ScoreEnd28,found.ScoreEnd29,ScoretoStore)

我认为不需要进一步的上下文,但如果需要,请告诉我。 我该如何清理它。我的意思是我如何使用循环将其转换为 10 行代码。一个确切的答案将不胜感激,因为我已经尝试过自己解决它。

【问题讨论】:

  • 是的,需要进一步的上下文。例如,我们不知道是否创建了 found 对象。如果是这样,我们可能会告诉您在该对象上创建一个名为 scoreEnd 的属性,该属性存储现在位于 ScoreEnd1ScoreEnd2 等中的值的数组,并将其传递给 updateScores...
  • 这个问题没有表现出足够的努力

标签: javascript react-native


【解决方案1】:

您的 found 对象格式错误。而不是拥有属性ScoreEnd1ScoreEnd2 等,您应该修复生成它的任何内容,以便它具有ScoreEnd 值的数组。然后您需要做的就是将数组从 0 切片到 End 并将其传播到参数列表中。

const scoreEnds = found.ScoreEnd.slice(0, End - 1);
const ScoretoStore = parseInt(TeamAShot) + "A";
updateScores(ID, ...scoreEnds, ScoretoStore);

您可以自己将格式错误的对象转换为数组,例如

const scoreEnds = Array.from(
  { length: 30 },
  (_, i) => found['ScoreEnd' + (i + 1)]
);

但最好是修复问题,以免一开始就创建错误的数据结构。

【讨论】:

    【解决方案2】:

    您应该将found.ScoreEndN 转换为found.ScoreEnd[n](一个数组)。

    然后你可以做一个for循环

    for(let i = 2; i < 30; i++){
        if(End == i) updateScores(ID, ...found.ScoreEnd.filter((el, index) => index < i), ScoretoStore);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-08
      • 2021-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-18
      相关资源
      最近更新 更多