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

Why am I getting an error?

有帮助吗?

解决方案

Your i value is 0,1,2,3,4 .. To get the char , you should use s[i] and string concat is += not + =

I mean

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

The below code gives you the expected result

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

Working JS Fiddle

其他提示

edit as fin += leet[i] and fin += i by removing the space within then now you can get your result as "01234"

Concatenation operator for object String is += not + =

For getting fin get value according to contents in s ypur code should be like this

for (var i in s) {
    if (leet.hasOwnProperty(s[i])) {
        fin += leet[s[i]];
    } 
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top