【问题标题】:javascript array error - allocation size overflowjavascript数组错误-分配大小溢出
【发布时间】:2015-07-29 06:04:28
【问题描述】:

我正在开发一个自定义应用程序。它将用户的锻炼计划存储在一个数组中。我的数组格式如下:[week][day][exercise]。一个用户一天可能有多个练习。

我有一个验证锻炼的功能,以确保每周选择正确的锻炼类型。

这是我的功能:

function verifyWorkout(workout, wtype){
    var errorlist = "";
    try{
        for(i=1;i<workout.length;i++){
            var cardiocount = 0;
            var strengthcount = 0;
            var corecount = 0;
            var hiitcount = 0;

            for(j=1;j<workout[i].length;j++){
                for(k=0;k<workout[i][j].length;k++){
                    if (workout[i][j][k].extype == "Cardio"){
                        cardiocount += cardiocount + 1;
                    }else if (workout[i][j][k].extype == "Strength"){
                        strengthcount += strengthcount + 1;
                    }else if (workout[i][j][k].extype == "Core"){
                        corecount += corecount + 1;
                    }else if (workout[i][j][k].extype == "Hiit"){
                        hiitcount += hiitcount + 1;
                    }
                }
            }

            if (wtype === "Beginner"){
                if (i = 1){
                    if (cardiocount < 1){
                        errorlist = errorlist + "Week 1 requires at least 1 cardio exercise.</br>";
                    }
                    if (strengthcount < 1){
                        errorlist = errorlist + "Week 1 requires at least 1 strength exercise.</br>";
                    }
                    if (corecount < 1){
                        errorlist = errorlist + "Week " + i + " requires at least 1 core exercise.</br>";
                    }
                } else if (i = 2){
                    if (cardiocount < 2){
                        errorlist = errorlist + "Week 2 requires at least 2 cardio exercises.</br>";
                    }
                    if (strengthcount < 1){
                        errorlist = errorlist + "Week 2 requires at least 1 strength exercise.</br>";
                    }
                    if (corecount < 1){
                        errorlist = errorlist + "Week " + i + " requires at least 1 core exercise.</br>";
                    }
                } else {
                    if (cardiocount < 3){
                        errorlist = errorlist + "Week " + i + " requires at least 3 cardio exercises.</br>";
                    }
                    if (strengthcount < 2){
                        errorlist = errorlist + "Week " + i + " requires at least 2 strength exercises.</br>";
                    }
                    if (corecount < 1){
                        errorlist = errorlist + "Week " + i + " requires at least 1 core exercise.</br>";
                    }
                }
            }else if (wtype === "Intermediate"){
                if (cardiocount < 3){
                    errorlist = errorlist + "Week " + i + " requires at least 3 cardio exercises.</br>";
                }
                if (strengthcount < 2){
                    errorlist = errorlist + "Week " + i + " requires at least 2 strength exercises.</br>";
                }
                if (corecount < 1){
                    errorlist = errorlist + "Week " + i + " requires at least 1 core exercise.</br>";
                }
            }else if (wtype === "Advanced"){
                if (cardiocount < 2){
                    errorlist = errorlist + "Week " + i + " requires at least 2 cardio exercises.</br>";
                }
                if (strengthcount < 2){
                    errorlist = errorlist + "Week " + i + " requires at least 2 strength exercises.</br>";
                }
                if (hiitcount < 2){
                    errorlist = errorlist + "Week " + i + " requires at least 2 hiit exercises.</br>";
                }
                if (corecount < 1){
                    errorlist = errorlist + "Week " + i + " requires at least 1 core exercise.</br>";
                }
            }

        }

        return errorlist;

    } catch(err) {
        console.log("error retrieving validation....");
        console.log(errorlist);
        console.log(err);
    }

}

当我尝试调用它时,我收到分配大小溢出错误。

请让我知道我做错了什么。

【问题讨论】:

  • if (i = 1) 使其陷入无限循环。更改为 if (i == 1)(其他地方也一样)。

标签: javascript arrays


【解决方案1】:

您的问题出在以下几行:

if (i = 1){
} else if (i = 2){

这些是作业。您想改用相等性检查:

if (i === 1){
} else if (i === 2){

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    • 2017-09-22
    • 1970-01-01
    • 2019-05-11
    • 2015-04-12
    • 2022-01-08
    相关资源
    最近更新 更多