This question already has answers here:
Jquery each - Stop loop and return object
(6个答案)
7年前关闭。
我有一个名为questionSets的数组,里面充满了对象。 createSet函数应创建新的或创建现有questionSets对象的副本。如果使用createSet进行复制,则使用功能getQuestionsFromSet。出于某些原因,当我从createSet()内部调用getQuestionsFromSet()时,我总是得到一个“未定义”的返回值。我不知道为什么,因为当我对要由getQuestionsFromSet()返回的值进行console.log()时,我确切地看到了我想要的。
我有这两个功能。
(6个答案)
7年前关闭。
我有一个名为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()
最佳答案
因为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
}
10-05 22:39