如何在JavaScript中返回forEach循环内部的值

如何在JavaScript中返回forEach循环内部的值,javascript,Javascript,我被我的代码卡住了 我写这个示例代码只是为了重现我的问题,所以这个代码根本不实用,但我希望你明白我的意思 在下面的代码中,对于要输出的最后一个值,我希望它是3,但它是未定义的 在这种情况下,如果我希望最后一个值为3,我应该如何写入 这只是一个示例代码,但在实际代码中,我从AmazonAPI获取内容,当它返回api错误时,我希望在1000毫秒后再次运行相同的函数 var list = [1,2,3]; var someClass = new SomeClass(); list.forEach(f

我被我的代码卡住了

我写这个示例代码只是为了重现我的问题,所以这个代码根本不实用,但我希望你明白我的意思

在下面的代码中,对于要输出的最后一个值,我希望它是3,但它是未定义的

在这种情况下,如果我希望最后一个值为3,我应该如何写入

这只是一个示例代码,但在实际代码中,我从AmazonAPI获取内容,当它返回api错误时,我希望在1000毫秒后再次运行相同的函数

var list = [1,2,3];
var someClass = new SomeClass();

list.forEach(function(value) {

    var result = someClass.getSomething(value);

    console.log("outside: " + result);  

});


function SomeClass() {

    var flag = false;

    this.getSomething = function(something) {

        if (something === 3 && flag === false) {

            flag = true;
            this.getSomething(something);

            //I need to return here, so the succeeding code is not read.
            return;

        }

        console.log("inside: " + String(something));

        return something;

    }

}
日志

inside: 1
outside: 1
inside: 2
outside: 2
inside: 3
outside: undefined // I expect this value to be 3!!!

forEach循环不返回值。
您可以创建全局变量并为其赋值。

forEach循环不返回值。 您可以创建全局变量并为其赋值。

您有一个测试:

如果要返回
3
,则不要在
return
语句后面加上任何内容<代码>返回表示
返回未定义
。将
返回3
返回某物

不过,您可能希望从递归调用返回:

return this.getSomething(something);
您有一个测试:

如果要返回
3
,则不要在
return
语句后面加上任何内容<代码>返回表示
返回未定义
。将
返回3
返回某物

不过,您可能希望从递归调用返回:

return this.getSomething(something);
问题是:

function SomeClass() {

    var flag = false;

    this.getSomething = function(something) {

        if (something === 3 && flag === false) {

            flag = true;

            this.getSomething(something); // not returning this

            return; // returning undefined

        }

        console.log("inside: " + String(something));

        return something;

    }

}
以下是修复方法:

function SomeClass() {

    var flag = false;

    this.getSomething = function(something) {

        if (something === 3 && flag === false) {

            flag = true;

            return this.getSomething(something);

        }

        console.log("inside: " + String(something));

        return something;

    }

}
问题是:

function SomeClass() {

    var flag = false;

    this.getSomething = function(something) {

        if (something === 3 && flag === false) {

            flag = true;

            this.getSomething(something); // not returning this

            return; // returning undefined

        }

        console.log("inside: " + String(something));

        return something;

    }

}
以下是修复方法:

function SomeClass() {

    var flag = false;

    this.getSomething = function(something) {

        if (something === 3 && flag === false) {

            flag = true;

            return this.getSomething(something);

        }

        console.log("inside: " + String(something));

        return something;

    }

}
将代码更改为

if(something==3&&flag==false) {

}

“return;”返回未定义的

将代码更改为

if(something==3&&flag==false) {

}


“return;”返回未定义的

它在代码中返回
未定义的
,因为您
返回if
子句中的code>

if
子句中返回这个.getSomething(something)

var list = [1, 2, 3];
var someClass = new SomeClass();

list.forEach(function(value) {

    var result = someClass.getSomething(value);

    console.log("outside: " + result);

});


function SomeClass() {

    var flag = false;

    this.getSomething = function(something) {

        if (something === 3 && flag === false) {

            flag = true;
            return this.getSomething(something);

        }

        console.log("inside: " + String(something));

        return something;

    }

}

它在您的代码中返回
未定义的
,因为您
返回if
子句中的code>

if
子句中返回这个.getSomething(something)

var list = [1, 2, 3];
var someClass = new SomeClass();

list.forEach(function(value) {

    var result = someClass.getSomething(value);

    console.log("outside: " + result);

});


function SomeClass() {

    var flag = false;

    this.getSomething = function(something) {

        if (something === 3 && flag === false) {

            flag = true;
            return this.getSomething(something);

        }

        console.log("inside: " + String(something));

        return something;

    }

}

虽然这是事实,但实际上与问题无关。问题中的代码没有尝试从
forEach
返回值。虽然这是真的,但实际上与问题无关。问题中的代码没有尝试从
forEach
返回值。在他的代码中,他在函数本身'this.getSomething(something)'中调用了相同的函数。这是什么行为?我只是好奇。它就像递归的或无限的眼睛,它是递归的!在实际的代码中,我从amazon api获取内容,当它返回api错误时,我想在1000毫秒后再次运行同一个函数。在他的代码中,他在函数本身中调用了同一个函数“this.getSomething(something)”,这是什么行为?我只是好奇。它就像递归的或无限的眼睛,它是递归的!在实际代码中,我从AmazonAPI获取内容,当它返回api错误时,我希望在1000毫秒后再次运行相同的函数。是的!!这就是我想要的!!非常感谢你!!我需要再等几分钟才能接受你的回答。是的!!这就是我想要的!!非常感谢你!!我需要再等几分钟才能接受你的回答。