如何解决Javascript中字符串的不变性问题?

如何解决Javascript中字符串的不变性问题?,javascript,string,immutability,Javascript,String,Immutability,由于字符串在Javascript中是不可变的,我如何使用用户的输入进行转换 我试图使用一个函数将十六进制颜色代码的数字改为十进制数,但却被字符串的不可变属性所困扰。我尝试使用“for”将每个字符复制到一个数组中,但新数组仍然无法操作。以下是我尝试执行的代码示例: var user_input = prompt("Please enter an hexadecimal color code:","e.g. A876FF"); var hexa_to_dec = function(

由于字符串在Javascript中是不可变的,我如何使用用户的输入进行转换

我试图使用一个函数将十六进制颜色代码的数字改为十进制数,但却被字符串的不可变属性所困扰。我尝试使用“for”将每个字符复制到一个数组中,但新数组仍然无法操作。以下是我尝试执行的代码示例:

var user_input = prompt("Please enter an hexadecimal color code:","e.g. A876FF");

        var hexa_to_dec = function(hexa_code)/*changes each digit from hexadecimal to decimal*/

       {
        for(i = 0; i < hexa_code.length; i++)

            {
            if (isNaN(hexa_code[i]))

                {
                switch(hexa_code[i])

                    {
                    case "A" : hexa_code[i] = 10; break;
                    case "B" : hexa_code[i] = 11; break;
                    case "C" : hexa_code[i] = 12; break;
                    case "D" : hexa_code[i] = 13; break;
                    case "E" : hexa_code[i] = 14; break;
                    case "F" : hexa_code[i] = 15; break;
                    }

                }

            }

        document.write(hexa_code);
        }

    hexa_to_dec(user_input);
var user_input=prompt(“请输入十六进制颜色代码:”,“例如A876FF”);
var hexa_to_dec=函数(十六进制代码)/*将每个数字从十六进制更改为十进制*/
{
对于(i=0;i
似乎应该有一种更简单的方法来实现这一点,例如,只需将字符串操作的结果写回同一个变量

var user_input = prompt("Please enter an hexadecimal color code:","e.g. A876FF");

user_input = user_input.replace(/[ABCDEF]/g, function(x) {
    return {A:10,B:11,C:12,D:13,E:14,F:15}[x];
});

document.body.innerHTML = user_input;

因为hexa_代码是一个字符串,并且是不可变的,所以不能对它进行回写,就像在switch语句中尝试hexa_代码[i]=10一样

创建一个新变量来存储结果

此处,请参见下面的工作代码(另见)

var user\u input=prompt(“请输入十六进制颜色
代码:“,”如A876FF”);
var hexa_to_dec=函数(hexa_代码){
var输出=”;
对于(变量i=0,限制=hexa_code.length;i
Great answer,@adeneo.return语句替换为
return x.toUpperCase().charCodeAt(0)-55会增加更多的模糊性。@Amberlamps-我喜欢这样,并且认为这很聪明。
var user_input = prompt("Please enter an hexadecimal color 

    code:","e.g. A876FF");

    var hexa_to_dec = function(hexa_code) {

            var output = "";

            for(var i = 0, limit=hexa_code.length; i < limit; i++) {

                    switch(hexa_code[i]){ 
                        case "A" : output += 10; break;
                        case "B" : output += 11; break;
                        case "C" : output += 12; break;
                        case "D" : output += 13; break;
                        case "E" : output += 14; break;
                        case "F" : output += 15; break;
                        default: output += hexa_code[i];
                        }

                    }

            console.log(output);
            };

    hexa_to_dec(user_input);