循环返回返回Undefined

时间:2018-01-23 02:55:50

标签: javascript loops return

我的JS代码:

function getmaxtrophie(list) {
    for(var i =0;i<77;i++) {
        if (list[i].progress !== 100) {
            return list[i];
        }   
    }
}
def createTrophy(name, description, progress, time):
        trophy = {
            "name": name,
            "time": time,
            "description": description,
            "progress": progress

我的清单的第一个对象: 0:{...} 描述:&#34; Absolviere dein erstes培训&#34; 名字:&#34; Jetzt geht的洛杉矶&#34; 进展:100 时间:&#34; 2017-09-14T16:19:08.000Z&#34;

如果我记录mylist.progress即可获得正确的结果,那么它必须是我的功能才能破坏它吗?

当我检查我的函数的结果时,日志总是显示Undefined。 我以为return会退出循环,因此list元素(list [i])应该是返回值。 不知道为什么它不起作用。 提前致谢

3 个答案:

答案 0 :(得分:0)

在您的函数getmaxtrophie中,并非所有路径都返回一个值:您的return语句可能不会被命中,在这种情况下,您的函数将返回undefined

尝试此功能突出显示问题:

function getmaxtrophie(list) {
    for(var i =0;i<77;i++) {
        if (list[i].progress !== 100) {
            return list[i];
        }   
    }
    throw 'No item found';
}

我也鼓励你从阵列原型中获利:

const firstItemWithInterestingProgress = list.find(item => item.progress !== 100); //firstItemWithInterestingProgress  may be undefined
PS:你打算实现的目标看起来很奇怪。

答案 1 :(得分:0)

我重写了你的createTrophy定义,它似乎现在正常工作。您可以看到我如何定义下面的示例mylist。

function createTrophy(name, description, progress, time) {
 return {
     "name": name,
     "time": time,
     "description": description,
     "progress": progress
     };

}

var mylist = new Array(100);

mylist[0] = { progress: 100, description: 'test', name: 'basic', time: '2017-09-14T16:19:08.000Z' };

mylist[1] = { progress: 100, description: 'test2', name: 'basic2', time: '2017-09-14T16:19:09.000Z' };             

mylist[2] = createTrophy('basic3', 'test3', 55, '2017-09-14T16:19:10.000Z');

document.write( getmaxtrophie(mylist).progress );

这是输出:

55

答案 2 :(得分:0)

解决。

问题是我的大脑无法解决这种睡眠不足的问题。 我把它弄乱了我的主。

我写道:

`maxprogressiontrophie=sortlist.getmaxtrophie`

而不是:

maxprogressiontrophie=getmaxtrophie(sortlist);

并忽略了它像7000次,结合转储调用不上传我的整个代码给你们! 对不起,谢谢你的回复。