在关联数组查找中未定义
Undefined in associative array lookup
var candidates = {
"1":"Barack Obama",
"2":"Mitt Romney",
"3":"Dennis Kucinich",
"4":"Quentin Tarantino",
"5":"Count Dracula"
};
function getRandomInt(min, max){
return Math.floor(Math.random() * (max - min + 1)) + min;
}
Object.size = function(obj) {
var size = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key)) size++;
}
return size;
};
function getRandomPresident(){
var num = getRandomInt(1, Object.size(candidates));
if (num!=5){
alert(num);
var key = num.toString();
var res = candidates[key];
return res;
} else {
getRandomPresident();
}
}
alert(getRandomPresident());
此代码有效,但有时在生成随机值后,它会输出"undefined"而不是名称 - http://jsbin.com/uriwal/edit#source 为什么?
重试(else
块(时,不会返回新值。您应该通过以下方式传递返回值:
return getRandomPresident();
目前,您正在选取一个新项目,但由于函数不返回它,因此返回值为 undefined
。
我猜getRandomInt((函数可以返回0,而您的关联数组没有。只需在 if 子句中创建更严格的检查:
if (num >= 1 && num <= 5) {
// do stuff
}
编辑:刮擦一下,你有getRandomInt(1,max(。无论如何,为什么还要有递归函数呢?只需这样做:
var num = 0;
while ((num = getRandomInt(1, ...)) > 5) {
num = getRandomInt(1, ...);
}
返回资源希望这有帮助
将函数更改为:
function getRandomInt(min, max){
return Math.floor(Math.random() * (max - min)) + min;
}
相关文章:
- 如何使用JavaScript查找未定义的CSS属性的值
- jQuery'查找'未定义
- 查找未定义值的所有对象
- TypeError:无法读取属性'查找'的未定义
- 查找任何未定义的变量并从url字符串中隐藏
- Expressjs Mongoose 查找嵌套的嵌入式文档未定义
- 与“未定义”进行比较是否仍会进行全局范围查找
- 在对象上定义 getter,以便所有未定义的属性查找都返回 “”
- 余烬未正确初始化存储:无法读取未定义的属性“查找”
- 错误“JavaScript 运行时错误:查找滚动位置时无法获取未定义或空引用的属性'scrollLeft'”
- EmberJS无法调用方法'查找'保存模型时未定义的
- 无法调用方法'查找'的未定义
- 在关联数组查找中未定义
- 在ReferenceError中查找未定义的变量名称字符串
- 是否可以使用jQuery来查找高度未定义的文本跨度的高度
- 查找并更改未定义值的属性
- DOM查找ID返回未定义
- 为什么是Lodash _.查找返回未定义的方法
- 在chrome中查找具有未定义值的元素
- Angular Undercore无法读取属性'查找'的未定义