Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript js(node.js)而循环不工作_Javascript_Node.js_While Loop - Fatal编程技术网

Javascript js(node.js)而循环不工作

Javascript js(node.js)而循环不工作,javascript,node.js,while-loop,Javascript,Node.js,While Loop,下面是我的node.js代码 基本上我有一个名为searchRes的缓冲区,首先我从中得到一些值 它应该循环结果-1次 它在循环 它完全正确地打印前3位信息,然后第4位之后的信息始终与第3位相同 我不知道为什么 results = 20; var sSize = searchRes.slice(8,16); sSize = parseInt(sSize,16); lols = new Array(); while(num <= results -1 ){ var cur = n

下面是我的node.js代码

基本上我有一个名为searchRes的缓冲区,首先我从中得到一些值

它应该循环结果-1次

它在循环

它完全正确地打印前3位信息,然后第4位之后的信息始终与第3位相同

我不知道为什么

results = 20;
var sSize = searchRes.slice(8,16);
sSize = parseInt(sSize,16);
lols = new Array();

while(num <= results -1 ){

    var cur = num + 1;
    var sres=0;
    for(var i in lols) { sres += lols[i]; }

    if (num == 0){

        var clanRes = searchRes.slice(0, 128 + (sSize * 2));

        var cLen = clanRes.slice(8,16);
        cLen = parseInt(cLen,16);

        var firstLen = clanRes.length;
        var lastLen = clanRes.length;

    }else{

        var cLen = searchRes.slice(lastLen + 8, lastLen + 16);

        cLen = parseInt(cLen,16);

        var clanRes = searchRes.slice(
            lastLen, 
            lastLen + 128 + (cLen * 2)
        );

            var abc = 1;
            if (abc == 1){
                var lastLen = firstLen + clanRes.length;
                abc++;
            }else{
                var lastLen = lastLen + clanRes.length;
            }

    }


    lols.push(cLen);

    console.log('\n\nClan ' + cur + ' Details');

    var clanID = clanRes.slice(0,8);
    clanID = parseInt(clanID,16);

    num ++;
}
我一点也不确定问题出在哪里。是在定义宗族时,还是在循环中

谢谢

**

更新了@bergi的代码 **

以下是exmaple searchRes:

还有一个示例sSize: 0000000电子十六进制 14-int


abc始终为1,在该比较中,该值在前面的行中被赋值,因此它永远不会计算else块。我假设您希望将变量的初始化从循环中移出。

能否提供searchRes和sSize的示例值?您的代码存在多个问题。num没有初始化,你,你做var abc=1;如果abc==1,则未使用clanID等变量,在初始化之前使用lastLen…请先修复这些变量,或解释您希望它们如何工作。@Bergi Ok。Num被初始化为0-但我错过了。这个循环对我有用。ClanID已存储,稍后我将需要它。首先定义lastLen。第一次运行时num始终==0,因此var lastLen=clanRes.length;我会跑的。我不明白abc值有什么问题。无论如何,我已经发布了一个新版本的代码。abc始终为1。在这种比较中,值在前一行中被赋值,因此它永远不会计算else块。@Bergi谢谢-我正在检查这是否解决了问题-它可能已经解决了。
num = 0;
var sSize = searchRes.slice(8,16);
sSize = parseInt(sSize,16);
lols = new Array();

    while(num <= 3){

        var cur = num + 1;
        var sres=0;
        for(var i in lols) { sres += lols[i]; }

        if (num == 0){

            var clanRes = searchRes.slice(0, 128 + (sSize * 2));

            var cLen = clanRes.slice(8,16);
            cLen = parseInt(cLen,16);

            var firstLen = clanRes.length;
            var lastLen = clanRes.length;

        }else{

            var cLen = searchRes.slice(lastLen + 8, lastLen + 16);

            cLen = parseInt(cLen,16);

            var clanRes = searchRes.slice(
                lastLen, 
                lastLen + 128 + (cLen * 2)
            );

                var abc = 1;
                if (abc == 1){
                    var lastLen = firstLen + clanRes.length;
                    abc++;
                }else{
                    var lastLen = lastLen + clanRes.length;
                }

        }


        lols.push(cLen);

        console.log('\n\nClan ' + cur + ' Details');

        var clanID = clanRes.slice(0,8);
        clanID = parseInt(clanID,16);
        console.log(clanID);

        num ++;
    }
var abc = 1;
if (abc == 1){