我有一个名为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()
答案 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
确实没有返回任何内容。