将字符串与新创建的布尔列表进行比较,不进行循环,

时间:2012-10-31 21:06:31

标签: javascript boolean

我在javascript中创建了一个新的布尔列表,属于不同语言的布尔值(true,false,verdadero,falso,ratt,fel等...)

我这样做了:

var false_swedish = new Boolean("fel");
与许多其他人一起等等。

我正在尝试将一个小型文字游戏编写为一种学习难题(我非常初学者),所以我被困在这里。现在我的目标是:由于我有一个包含10个新布尔值的列表,如何将它们与字符串进行比较(用户使用prompt编写的内容)?

我首先想到的是创建一个包含所有新单词的数组,然后将它们与字符串进行比较,但是这会将它们声明为新的布尔值,并查明用户输入是否为布尔值,这里我不是对最终结果非常感兴趣,但更多的是在做这个过程中(正如我所说,只是一个学习的练习)

我创建了一个检查变量是否为布尔值的函数,基本上使用:

if (value.constructor == Boolean ){
    return true;

然后使用该函数将新method添加到带prototype的String,这样我就可以检查prompt提供的字符串。但是,当然,这个函数是没用的,因为它假设变量可能是布尔值,而它们不是。他们总是串起来......

我是否试图将其复杂化太多?

感谢您的任何想法

1 个答案:

答案 0 :(得分:0)

是的,你试图让它太复杂了。

new Boolean("any string")没用,因为对于任何非空字符串,结果变量都是真的。如果您的目标是检查用户是仅输入'true还是'false',则最佳解决方案是将其输入与'true'进行比较。但是如果有很多可能的输入,你可以使用一个对象:

// this object contains every string value you want to include in your script defined by a number
var predefinedValues = {'true': 1, 'false': 0, 'verdadero':1, 'falso':0};
// i assume userInput contains user input
if(predefinedValues[userInput] == 1) {
    //true
}
else {
    //false or not found in array
}