我正在开展一个codecademy.com练习,我们使用for-in语句来循环访问一个对象,并通过检查语言对象中属性的值是否是使用{{的字符串来打印不同语言的hello 1}}
我的检查以查看该值是否为字符串不起作用。我的循环给了我这个结果
typeof
代码
english
french
notALanguage
spanish
这些是练习的说明
如果你真的想到它,对象就不那么陌生了!
请记住,您可以使用typeof找出变量的类型 MYVARIABLE。我们现在关注的类型是“对象”, “string”和“number”。
回想一下for-in循环:
for(var x in obj){executeSomething(); }
这将逐个浏览obj的所有属性并分配 每次循环运行时,属性名称为x。
让我们结合我们对这两个概念的了解。
检查语言对象。三个属性是字符串,而 一个是数字。
使用for-in循环打印出三种打招呼方式。在里面 循环,你应该检查属性值是否是一个字符串,所以你 不要不小心打印一个号码。
答案 0 :(得分:21)
那是因为你正在检查对象的key
。要检查实际值,您应该执行object[key]
之类的操作。试试这个:
var languages = {
english: "Hello!",
french: "Bonjour!",
notALanguage: 4,
spanish: "Hola!"
};
// print hello in the 3 different languages
for(var hello in languages){
var value = languages[hello];
if (typeof value === "string"){
console.log(value);
}
}
答案 1 :(得分:4)
以下是答案:(使用typeof,然后使用对象名称,后跟for语句中的var,并测试它是否等于“string”)
var languages = {
english: "Hello!",
french: "Bonjour!",
notALanguage: 4,
spanish: "Hola!"
};
// print hello in the 3 different languages
for (var x in languages){
if (typeof languages[x] === "string"){
console.log(languages[x]);
}
else ;
}
答案 2 :(得分:1)
您正在检查对象的键,而不是值。检查对象的构造函数以确定其类型通常是一种很好的做法。
这样的事情:
var languages = {
english: "Hello!",
french: "Bonjour!",
notALanguage: 4,
spanish: "Hola!"
};
for(i in languages) {
if(languages[i].constructor === String) {
console.log(languages[i])
};
};
答案 3 :(得分:1)
“字符串”与字符串不同。我找到了一种测试typeof字符串的方法。
RGB (int) =
R * (256^2) +
G * (256) +
B
您当然可以使用“字符串”进行比较,但是任何实际的字符串都可以。
答案 4 :(得分:0)
以下编码对于仅执行字符串值也很有用。通过使用变量来使用变量来访问abject的属性列表之后,使用isNaN检查值是否为NotANumber。下面给出的代码对您有用
var languages = {
english: "Hello!",
french: "Bonjour!",
notALanguage: 4,
spanish: "Hola!"
};
// print hello in the 3 different languages
for(a in languages)
{
if(isNaN(languages[a]))
console.log(languages[a]);
}
答案 5 :(得分:0)
这是为我工作的价值
for(var x in languages){
if(typeof languages[x] === "string"){
console.log(languages[x]);
} else }