javascript获取数组名

javascript获取数组名,javascript,Javascript,我有一个数组: var utf = Array( a: Array('á','à','ã','Á','À','Ã'), e: Array('é','ê','É','È'), i: Array('í','Í'), o: Array('ó','õ','Ó','Õ'), u: Array('ú','Ú'), c: Array('ç','Ç') ); 我想运行一个for循环,如: for(i = 0; i < utf.length; i++)

我有一个数组:

var utf = Array(
    a: Array('á','à','ã','Á','À','Ã'),
    e: Array('é','ê','É','È'),
    i: Array('í','Í'),
    o: Array('ó','õ','Ó','Õ'),
    u: Array('ú','Ú'),
    c: Array('ç','Ç')   
);
我想运行一个for循环,如:

for(i = 0; i < utf.length; i++){
    for (j = 0; j < utf[i].length; j++){
         mystring.replace(utf[i][j], <utf[i][arrayname]>);
    }
}
for(i=0;i
这可能吗?怎样?你会用另一种方式吗?怎么做


非常感谢

Javascript中的数组只支持整数索引。使用对象。我还建议使用JSON作为创建新数组和对象的最可读和最简单的方法:

var utf = {
    a: ['á','à','ã','Á','À','Ã'],
    e: ['é','ê','É','È']
    //etc
};
for (var i in utf)
{
    //In the i variable, you'll find name of array of chars: a, e, i, o, u, c...
    //The array of chars can be found in utf[i]
}
函数doReplace(mystring)
{
变量utf={
a:[‘a’、‘a’、‘Á’、‘À’、‘Ã’],
e:[‘é’、‘ê’、‘È’],
i:[‘i’、‘Í’],
o:[‘ó’、‘õ’、‘Ó’、‘Õ’],
u:[ú,'Ú'],
c:[‘ç’、‘ç’]
};
用于(utf中的var c)
{
var charArray=utf[c];
对于(var j=0;j
很慢。如果您的浏览器编译正则表达式(像大多数新的正则表达式一样),最快的解决方案可能是每个字符使用一个正则表达式:

var utf = {
    a: ['á','à','ã','Á','À','Ã'],
    e: ['é','ê','É','È'],
    i: ['í','Í'],
    o: ['ó','õ','Ó','Õ'],
    u: ['ú','Ú'],
    c: ['ç','Ç']
};

var utfRegexes = {};

// Sadly javascript isn't C# so something that could be done in two lines
// of LINQ need to be unrolled.
for(var c in utf)
{
  console.log("in " + c);
  var chars = "[";
  for (var j = 0; j < utf[c].length; j++)
  {
    chars += utf[c][j];
  }
  chars += "]";
  utfRegexes[c] = new RegExp(chars, "g");
}

function doReplaceRegex(mystring)
{   
  for(var c in utfRegexes)
  {
      mystring = mystring.replace(utfRegexes[c], c);        
  }
  return mystring;
}
var utf={
a:[‘a’、‘a’、‘Á’、‘À’、‘Ã’],
e:[‘é’、‘ê’、‘È’],
i:[‘i’、‘Í’],
o:[‘ó’、‘õ’、‘Ó’、‘Õ’],
u:[ú,'Ú'],
c:[‘ç’、‘ç’]
};
var utfRegexes={};
//遗憾的是,javascript不是C语言,所以可以用两行代码完成
//LINQ的部分需要展开。
用于(utf中的var c)
{
控制台登录(“登录”+c);
var chars=“[”;
对于(var j=0;j
可以使用关联数组(即对象)而不是普通数组

var utf = {
    'a': ['á','à','ã','Á','À','Ã'],
    'e': ['é','ê','É','È'],
    'i': ['í','Í'],
    'o': ['ó','õ','Ó','Õ'],
    'u': ['ú','Ú'],
    'c': ['ç','Ç']
    }

    var mystring = 'abgvÁÓÚ';
    for(var i in utf){
        for(var j = 0; j < utf[i].length; j++){
        mystring.replace(utf[i][j], i);
        }
    }
var utf={
‘a’:[‘a’、‘a’、‘Á’、‘À’、‘Ã’],
‘e’:[‘e’、‘ê’、‘ê’、‘È’],
“i”:[“i”,“Í”],
‘o’:[‘o’、‘õ’、‘Ó’、‘Õ’],
“u”:[“u”,“Ú”],
‘c’:[‘ç’,‘ç’]
}
var mystring='abgvÁ211;Ú';
用于(utf中的var i){
对于(var j=0;j
//只是一种语义格式,缺乏速度提升
var utf=数组(
数组('a','a','a','Á','À','Ã'),
数组('e','e','ê','È'),
数组('i','i','Í'),
数组('o'、'o'、'õ'、'Ó'、'Õ'),
数组('u'、'u'、'Ú'),
数组('c'、'ç'、'ç')
);
对于(i=0;i
注意,
replace
只会替换给定字符/字符串的第一个实例。哦,是的,也可以解决这个错误,因为我已经解决了replace返回其结果的事实,而不是像OP假设的那样更改输入。
var utf = {
    'a': ['á','à','ã','Á','À','Ã'],
    'e': ['é','ê','É','È'],
    'i': ['í','Í'],
    'o': ['ó','õ','Ó','Õ'],
    'u': ['ú','Ú'],
    'c': ['ç','Ç']
    }

    var mystring = 'abgvÁÓÚ';
    for(var i in utf){
        for(var j = 0; j < utf[i].length; j++){
        mystring.replace(utf[i][j], i);
        }
    }
// Just a semantic reformat, lacks speed improvements
var utf = Array(
  Array('a', 'á','à','ã','Á','À','Ã'),
  Array('e', 'é','ê','É','È'),
  Array('i', 'í','Í'),
  Array('o', 'ó','õ','Ó','Õ'),
  Array('u', 'ú','Ú'),
  Array('c', 'ç','Ç')  
);
for(i = 0; i < utf.length; i++){
    for j = 1; j < utf[i].length; j++){
         mystring.replace(utf[i][j], utf[i][0]);
    }
}