1
var leet = {
    h: 1,
    e: 2,
    r: 3,
    o: 4,
    l: 5
};

var s = "hello";
var fin = "";

for (var i in s) {
    if (leet.hasOwnProperty(i)) {
        fin + = leet[i];
    } else {
        fin + = i
    }
}
console.log(fin);

为什么我会收到错误消息?

4

3 回答 3

0

对象的连接运算String+=不是+ =

fin根据 ypur 代码中的内容获取价值应该s是这样的

for (var i in s) {
    if (leet.hasOwnProperty(s[i])) {
        fin += leet[s[i]];
    } 
}
于 2013-05-08T04:32:33.597 回答
0

您的 i 值为 0,1,2,3,4 .. 要获取 char ,您应该使用 s[i] 并且字符串 concat 是 += 而不是 + =

我是说

for (var i in s)
{
   alert(i);   // Gives 0,1,2,3,4
   alert(s[i]);  // Gives h,e,l,l,o
}

下面的代码给你预期的结果

var leet = {
        h: 1,
        e: 2,
        r: 3,
        o: 4,
        l: 5
    };

var s = "hello";
var fin = "";

for (var i in s) {
    if (leet.hasOwnProperty(s[i])) {
        fin += leet[s[i]];
    } else {
        fin += i
    }
}
alert(fin);

工作 JS 小提琴

于 2013-05-08T04:33:07.903 回答
0

编辑为fin += leet[i]fin += i通过删除其中的空格然后现在你可以得到你的结果为“01234”

于 2013-05-08T04:35:03.947 回答