JavaScript循环在条件

时间:2019-05-14 21:04:43

标签: javascript

我正在尝试制作一个能够导出以前选择的名称列表(按值排序)的Web应用程序。一切正常,除了我的变量在for循环之一中不起作用。

我已经尝试过修改一堆代码。试图用很多东西来代替变量,例如以其他方式构造数组,试图用return的{​​{1}}来获取我想要的数字,但效果不佳。

简而言之:

这有效:

getExportCount()

这不是:

for (var i = 0; i < 3; i++) {
        if (wstv[i].toExport == true) {
            console.log(wstv[i]);
            exportList.push(wstv[i]);
        }
    }

完整的(ish)代码如下所示:

for (var i = 0; i < exportNum; i++) {
        if (wstv[i].toExport == true) {
            console.log(wstv[i]);
            exportList.push(wstv[i]);
        }
    }

可以在JSFiddle上找到“工作”示例(从上面)。我希望我的代码执行与现在完全相同的操作,但是使用变量而不是“ 3”。

有人可以告诉我我在这里俯瞰什么吗?

编辑: 首先感谢您的所有帮助! 正如评论中指出的,我将逻辑更改为:

var exportNum;

function getExportCount() {
    var toExportCount = -1;
    for (var k = 0; k < wstv.length; k++) {
        if (wstv[k].toExport == true) {
            toExportCount += 1;
        }
    }
    toExportCount = exportNum;
}

function exporter() {
    getExportCount();
    var exportList = [];
    for (var i = 0; i < exportNum; i++) {
        if (wstv[i].toExport == true) {
            exportList.push(wstv[i]);
        }
    }

    var exportListSort = exportList.sort(function (a, b) {
        return a.value - b.value
    });

    for (var j = 0; j < exportList.length; j++) {
        if (exportListSort[j] != undefined) {
            $("body").append("<p>" + exportListSort[j].longName + "</p>")
        } else {
            console.log("Error");
        }
    }
    return "Export successfull"
}

我还将JSFiddle更新为实际工作版本。

1 个答案:

答案 0 :(得分:4)

您永远不会将exportNum分配给值。我猜想您在getExportCount函数中交换了变量,最​​后一行应该是:

exportNum = toExportCount;

虽然将此值分配给exporter中的局部变量而不使用全局变量会更干净,但是当另一个函数更改它时,您将避免错误