范围问题使我的未定义 - 带有循环和 if 语句的简单 JavaScript 函数不断出现
Scope issues keep getting my undefined - simple JavaScript function with loop and if statement
更新:
我能够为我想要 select 的用户获得真假指示,但到目前为止,我无法真正将他们的 ID 放入数组中。最新代码:
cInfo 是一个带有 {key1: array, key2: 'user'} 的对象
其中 array 是一个对象数组
其中 'name' 是每个数组中每个对象内的键
var theAnswer = [];
var answer = function() {
for(var c = 0; c < cInfo.array.length; c++)
var pitched = _.some(_.map(cInfo.array[c], function(n) {return n.name == Name}))
if (pitched)
theAnswer.push(cInfo.user[c]);
return theAnswer;
}
console.log(cInfo.user) returns 一个用户,但在函数中它仍然未定义。
更新结束
我一直从这段代码中得到未定义的信息。我很确定这与我的闭包有关,但如果我真的知道我就不会发布这个:
cComplete
是一个对象数组,其关键字段包括名称和用户。
var answer = function() {
var c = cComplete.length
while (c--) {
var theAnswer = [];
if (cComplete[c].name == Name) {
theAnswer.push(cComplete[c].user);
}
}
return theAnswer
}
console.log(answer());
尝试在循环之前声明和初始化 theAnswer
,因为现在它的范围仅限于循环。不仅如此,目前每次循环迭代时,你的数组都会被重置,所以除了最后一个元素之外它几乎没有用。在循环之前初始化将解决这两个问题。
希望这对您有所帮助,编码愉快。
更新: 我能够为我想要 select 的用户获得真假指示,但到目前为止,我无法真正将他们的 ID 放入数组中。最新代码:
cInfo 是一个带有 {key1: array, key2: 'user'} 的对象 其中 array 是一个对象数组 其中 'name' 是每个数组中每个对象内的键
var theAnswer = [];
var answer = function() {
for(var c = 0; c < cInfo.array.length; c++)
var pitched = _.some(_.map(cInfo.array[c], function(n) {return n.name == Name}))
if (pitched)
theAnswer.push(cInfo.user[c]);
return theAnswer;
}
console.log(cInfo.user) returns 一个用户,但在函数中它仍然未定义。
更新结束
我一直从这段代码中得到未定义的信息。我很确定这与我的闭包有关,但如果我真的知道我就不会发布这个:
cComplete
是一个对象数组,其关键字段包括名称和用户。
var answer = function() {
var c = cComplete.length
while (c--) {
var theAnswer = [];
if (cComplete[c].name == Name) {
theAnswer.push(cComplete[c].user);
}
}
return theAnswer
}
console.log(answer());
尝试在循环之前声明和初始化 theAnswer
,因为现在它的范围仅限于循环。不仅如此,目前每次循环迭代时,你的数组都会被重置,所以除了最后一个元素之外它几乎没有用。在循环之前初始化将解决这两个问题。
希望这对您有所帮助,编码愉快。