试图只打印字符串数据

时间:2015-11-29 17:00:44

标签: javascript if-statement for-loop

我正在尝试将for-loop和if语句只打印出字符串数据。

var languages = {         英语:“你好!”,         法语:“Bonjour!”,         notalangage:4,         西班牙语:“Hola!”     };

// print hello in the 3 different languages
for (var x in languages) {
    if (typeof x === "string") {
        console.log(languages[x])
    }
};

3 个答案:

答案 0 :(得分:0)

我相信你要做的是:

for (var x in languages) {
    if (typeof languages[x] === "string") {
        console.log(languages[x]);
    }
}

您目前编码的方式将打印出所有"键"在对象中,因为键都是"字符串"。

答案 1 :(得分:0)

在对象字面意义上,英语,法语,非语言,西班牙语是属性。 JavaScript中的属性是字符串,但在对象文字中定义属性名称时,可以省略字符串分隔符。

使用for ... in循环浏览属性名称时,属性名称为字符串,如

for (x in languages) {
    alert(typeof x);
    //-> "string"
}

你需要这样

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

// print hello in the 3 different languages
 for (var x in languages) {
    //console.log(typeof x); //it will print 4 times because all keys are string
    if (typeof languages[x] === "string") {
        console.log(languages[x])
    }
 }

演示http://jsfiddle.net/4hxgvr6q/

答案 2 :(得分:0)

谢谢我实际上找到了与用户相同的问题:Leahcim发布了帖子用户的正确答案:Some Guy JavaScript: using typeof to check if string

for (var hello in languages) {
    var value= languages[hello] 
    if (typeof value === "string") {
        console.log(value)
    }
};