为什么我的返回值未定义(JavaScript)

时间:2013-06-24 13:22:09

标签: javascript arrays object return

我有一个名为questionSets的数组,其中包含完整的对象。 createSet函数应该创建new或创建现有questionSets对象的副本。如果使用createSet创建副本,则使用函数getQuestionsFromSet。出于某种原因,当我从createSet()内部调用getQuestionsFromSet()时,我总是得到'undefined'的返回值。我无法弄清楚为什么因为当我执行getQuestionsFromSet()返回的值的console.log()时,我看到了我想要的。

我有这两个功能。

function createSet(name, copiedName) {
    var questions = [];
    if (copiedName) {
        questions = getQuestionsFromSet(copiedName);
    }
    console.log(questions); // undefined. WHY??
    questionSets.push({
        label: name,
        value: questions
    });
}; // end createSet()

function getQuestionsFromSet(setName) {
    $.each(questionSets, function (index, obj) {
        if (obj.label == setName) {
            console.log(obj.value); // array with some objects as values, which is what I expect.
            return obj.value;
        }
    });
}; // end getQuestionsFromSet()

2 个答案:

答案 0 :(得分:7)

由于getQuestionsFromSet()没有return任何内容,因此隐式未定义

你需要的是:

function getQuestionsFromSet(setName) {
    var matched = []; // the array to store matched questions..
    $.each(questionSets, function (index, obj) {
        if (obj.label == setName) {
            console.log(obj.value); // array with some objects as values, which is what I expect.
            matched.push(obj.value); // push the matched ones
        }
    });
    return matched; // **return** it
}

答案 1 :(得分:2)

return obj.value;嵌套在内部$.each(function{})中,getQuestionsFromSet确实没有返回任何内容。