用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没有解释他需要什么时,就会发生这种情况;)你完全正确,无论如何,你应该得到最好的答案