用Javascript中新定义的值替换数组值

用Javascript中新定义的值替换数组值,javascript,arrays,Javascript,Arrays,我现在需要做的是替换单个字母,类似这样的 //Get message from textarea var msg = $('#mytextarea').val(); //Convert string to array of letters // eg. cata = ['c','a','t','a'] var msgLettersAsArray = msg.split(''); 有没有办法做到这一点? 我需要做的就是用我选择的字母替换数组中已经存在的字母未测试,但应该可以工作 c = b;

我现在需要做的是替换单个字母,类似这样的

//Get message from textarea
var msg = $('#mytextarea').val();

//Convert string to array of letters
// eg. cata = ['c','a','t','a']
var msgLettersAsArray = msg.split('');
有没有办法做到这一点?
我需要做的就是用我选择的字母替换数组中已经存在的字母

未测试,但应该可以工作

c = b;
a = e;
t = c;
a = e;

//array neeeds to be converted from this:
var array = ['c','a','t','a'];

// to this:
var array = ['b','e','c','e'];

未经测试,但应能正常工作

c = b;
a = e;
t = c;
a = e;

//array neeeds to be converted from this:
var array = ['c','a','t','a'];

// to this:
var array = ['b','e','c','e'];

当然,只需为循环使用

//Get message from textarea
var msg = $('#mytextarea').val(); // "cata"

replaceChars(msg, {c:'b', a:'e', t:'c', a:'e'}); // "bece"
var数组=['c','a','t','a'];
对于(var i=0;i
但使用对象存储这些映射可以使代码更加紧凑:

var array = ['c','a','t','a'];
for (var i = 0; i < array.length; i++)
{
    var cur = array[i];
    if (cur == 'c') {
        array[i] = 'b';
    } else if (cur == 'a') {
        array[i] = 't';
    } else if (cur == 't') {
        array[i] = 'c';
    }
}
var数组=['c','a','t','a'];
变量转换={'c':'b','a':'e','t':'c'};
对于(var i=0;i
当然可以,只需为
循环使用一个

//Get message from textarea
var msg = $('#mytextarea').val(); // "cata"

replaceChars(msg, {c:'b', a:'e', t:'c', a:'e'}); // "bece"
var数组=['c','a','t','a'];
对于(var i=0;i
但使用对象存储这些映射可以使代码更加紧凑:

var array = ['c','a','t','a'];
for (var i = 0; i < array.length; i++)
{
    var cur = array[i];
    if (cur == 'c') {
        array[i] = 'b';
    } else if (cur == 'a') {
        array[i] = 't';
    } else if (cur == 't') {
        array[i] = 'c';
    }
}
var数组=['c','a','t','a'];
变量转换={'c':'b','a':'e','t':'c'};
对于(var i=0;i
非常简单,只需定义一个翻译映射并使用
Array.prototype.map

var array = ['c','a','t','a'];
var transform = { 'c': 'b', 'a': 'e', 't': 'c' };
for (var i = 0; i < array.length; i++)
{
    array[i] = transform[array[i]];
}

编辑:看起来您实际上只是想替换字符串中的字母,在这种情况下@phylax-answer是正确的。不需要使用数组来进行简单的字符串替换。

非常简单,只需定义一个翻译映射并使用
Array.prototype.map

var array = ['c','a','t','a'];
var transform = { 'c': 'b', 'a': 'e', 't': 'c' };
for (var i = 0; i < array.length; i++)
{
    array[i] = transform[array[i]];
}
var translationMap = {
    c: 'b',
    a: 'e',
    t: 'c'
};

//returns ['b','e','c','e']
['c','a','t','a'].map(function (letter) { return translationMap[letter] || letter; });
编辑:看起来您实际上只是想替换字符串中的字母,在这种情况下@phylax-answer是正确的。无需使用数组进行简单的字符串替换。

在FIRE BUG控制台中运行此操作
var translationMap = {
    c: 'b',
    a: 'e',
    t: 'c'
};

//returns ['b','e','c','e']
['c','a','t','a'].map(function (letter) { return translationMap[letter] || letter; });
变量数组=['c','a','t','a']; var myarray=[]; 对于(i=0;i
在Firebug控制台中运行
变量数组=['c','a','t','a'];
var myarray=[];

对于(i=0;i,我建议对数组中的每个元素使用开关大小写

RUN THIS IN YOUR FIRE BUG CONSOLE

var array = ['c','a','t','a'];
var myarray = [];
for(i=0; i<=array.length; i++)
{
    if(array[i] == 'c' )
    {
        array[i] = 'b'
    }
    if(array[i] == 'a' )
    {
        array[i] = 'e'
    }
    if(array[i] == 't' )
    { 
        array[i] = 'c'
    }
    if(array[i] == 'a' )
    {
        array[i] = 'a'
    }
}

我建议对数组中的每个元素使用开关盒

RUN THIS IN YOUR FIRE BUG CONSOLE

var array = ['c','a','t','a'];
var myarray = [];
for(i=0; i<=array.length; i++)
{
    if(array[i] == 'c' )
    {
        array[i] = 'b'
    }
    if(array[i] == 'a' )
    {
        array[i] = 'e'
    }
    if(array[i] == 't' )
    { 
        array[i] = 'c'
    }
    if(array[i] == 'a' )
    {
        array[i] = 'a'
    }
}

只是从我的评论中做出回答:

就像OP所说的,不使用
split()
,也可以只调用一次
String.replace()

RegExp可能会使事件更简单:

var map = {
  c: 'b',
  a: 'e',
  t: 'c'
};

msg.replace(/[a-z0-9]/g, function (i) { return map[i] || i; })

只是从我的评论中做出回答:

就像OP所说的,不使用
split()
,也可以只调用一次
String.replace()

RegExp可能会使事件更简单:

var map = {
  c: 'b',
  a: 'e',
  t: 'c'
};

msg.replace(/[a-z0-9]/g, function (i) { return map[i] || i; })


你可以替换字母bevor来拆分字符串吗?
msg.replace(/c/g,'b')
yes,但在“真实”代码中,我需要替换a-z中的所有字母,使用replace方法的0-9将要求我为需要更改的每个字母调用replace函数。我错了吗?只需调用一次
replace()
var-map={c:'b',a:'e',t:'c'}
msg.replace(/[a-z0-9]/g,函数(i){return-map[i]| i;})
你能把分割字符串的字母bevor替换掉吗?
msg.replace(/c/g,'b')
是的,但在“real”中我需要用replace方法替换a-z,0-9中的所有字母的代码将要求我为需要更改的每个字母调用replace函数。我错了吗?只需一次调用
replace()
var map={c:'b',a:'e',t:'c'}
msg.replace(/[a-z0-9]/g,函数(I){return map[I]|I;})<代码> >请考虑“代码>字母< /代码>不在<代码>平移映射< /代码>之前,我给你一个赞成票:- @ BurGi OP有固定的替换,请考虑“代码>字母< /代码>不在<代码>平移映射< /代码>之前,我给你一个赞成票:- @ BurGi OP有固定替换,MpApple使用A,把你的文字放在代码外,不要喊(大写)。请使用a,把你的文字放在代码外,不要喊(大写)。他想要字符串还是数组?我很困惑。无论如何,最坏的情况下,这只是一个玩
split
join
;)的问题@plalx:
.map()
解决方案太简单了,在我的个人助手库中有一个
String.prototype.replaceChars
函数,所以我刚刚发布了:-)他想要字符串还是数组?我很困惑。无论如何,最坏的情况下,这只是一个玩
split
join
;)的问题@plalx:personal helper库中的
.map()
解决方案太琐碎了,并且有一个
字符串.prototype.replaceChars
函数,所以我刚刚发布了它:-)
replace
?认真地还有@Bergi我真是太蠢了。忙碌了一天之后有点累。
更换
?认真地还有@Bergi我真是太蠢了。忙碌了一天之后有点累。如果OP没有解释他需要什么,就会发生这种情况;)你是完全正确的,无论如何,你应该得到最好的答案。当OP没有解释他需要什么时,就会发生这种情况;)你完全正确,无论如何,你应该得到最好的答案