2

我有一个名为 questionSets 的数组,里面装满了对象。createSet 函数应该创建新的或创建现有 questionSets 对象的副本。如果使用 createSet 进行复制,则使用函数 getQuestionsFromSet。出于某种原因,当我从 createSet() 内部调用 getQuestionsFromSet() 时,我总是得到一个返回值“未定义”。我不知道为什么,因为当我对 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()
4

2 回答 2

8

因为getQuestionsFromSet()没有return任何东西,所以是隐含的undefined

你需要的可能是这样的:

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
}
于 2013-06-24T13:23:47.473 回答
2

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

于 2013-06-24T13:24:53.003 回答