JavaScript:使用typeof检查字符串

JavaScript:使用typeof检查字符串,javascript,Javascript,我正在做一个codecademy.com练习,我们使用for-in语句通过检查语言对象中属性的值是否为字符串,使用typeof 检查值是否为字符串的检查无效。我的循环给了我这个结果 english french notALanguage spanish 代码 var languages = { english: "Hello!", french: "Bonjour!", notALanguage: 4, spanish: "

我正在做一个codecademy.com练习,我们使用for-in语句通过检查语言对象中属性的值是否为字符串,使用
typeof

检查值是否为字符串的检查无效。我的循环给了我这个结果

english
french
notALanguage
spanish
代码

   var languages = {
        english: "Hello!",
        french: "Bonjour!",
        notALanguage: 4,
        spanish: "Hola!"
    };

    // print hello in the 3 different languages
    for(var hello in languages){
        var value = hello;
        if (typeof value === "string"){
        console.log(value); 
        }
    }
这些是练习的说明

如果你真的想一想,对象就不会那么陌生了

请记住,您可以使用typeof来确定变量的类型 myVariable。我们现在关注的类型是“对象”, “字符串”和“数字”

回想一下for in循环:

对于(obj中的var x){executesmething();}

这将逐个检查obj的所有属性并分配 每次循环运行时将属性名设置为x

让我们结合这两个概念的知识

检查语言对象。三个属性是字符串,而 一是数字

使用for-in循环打印出打招呼的三种方式。在 循环时,应检查属性值是否为字符串,以便 不要意外地打印数字


这是因为您正在检查对象的
键。要检查实际值,您应该执行类似于
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); 
    }
}

您正在检查对象的键,而不是值。检查对象的构造函数以确定其类型通常是一种好的做法

大概是这样的:

var languages = {
    english: "Hello!",
    french: "Bonjour!",
    notALanguage: 4,
    spanish: "Hola!"
};

for(i in languages) {

  if(languages[i].constructor === String) {
    console.log(languages[i])   
  };

};
答案如下:(在for语句中使用typeof,然后使用对象名,后跟var,并测试它是否等于“string”)


下面的编码对于只执行字符串值也很有用。通过使用变量访问abject的属性列表,然后使用它检查值是否是一个NotANumber(使用isNaN)。下面给出的代码对您很有用

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]);
}

这是为我工作的价值观

for(语言中的var x){

“string”与string不同。我找到了一种测试string的typeof的方法

if (typeof something === typeof "test") ...

当然,您可以使用“字符串”进行比较,但任何实际的字符串都可以。

提出问题时可以不使用问号(?),也可以不使用问题的典型语法。OP显示了我的问题所在,以及两位回答问题的人(以及所有投赞成票的人)清楚地理解它。是的,你已经给出了代码和相应的明显输出。告诉你你的期望是什么是一个好主意,因为代码是完全有效的。起初我不理解你在说什么,但现在我明白你在做什么。很棒的想法。这样你可以真正确定你的发现是一个字符串值。例如你可以稍微提高它的清晰度,然后说:如果(某物的类型===字符串的类型)。。
if(typeof languages[x] === "string"){
    console.log(languages[x]);
} else }
if (typeof something === typeof "test") ...