【问题标题】:How to split the value of an text-field into an array containing every single char, and than accessing this array?如何将文本字段的值拆分为包含每个字符的数组,而不是访问该数组?
【发布时间】:2026-01-15 08:50:01
【问题描述】:

我想拆分每个字符中文本字段的值并替换数组的每个值,从而由另一个数组中的等价物引起。文本字段中的值始终可以具有不同的长度。但是我该怎么做呢?我必须创建一个新数组吗?

例如:

如果文本字段的值为:AaBbCc

新的数组应该包含:A,a,B,b,C,c

var charsv = new Array();
charsv[" "] = 128; charsv["!"] = 01; charsv['"'] = 02; charsv["#"] = 03;     
charsv["$"] = 04; charsv["%"] = 05; charsv["&"] = 06; charsv["’"] = 07;
charsv["("] = 08; charsv[")"] = 09; charsv["*"] = 10; charsv["+"] = 11; 
charsv[","] = 12; charsv["-"] = 13; charsv["."] = 14; charsv["/"] = 15; 
charsv["0"] = 16; charsv["1"] = 17; charsv["2"] = 18; charsv["3"] = 19;
charsv["4"] = 20; charsv["5"] = 21; charsv["6"] = 22; charsv["7"] = 23; 
charsv["8"] = 24; charsv["9"] = 25; charsv[":"] = 26; charsv[";"] = 27; 
charsv["<"] = 28; charsv["="] = 29; charsv[">"] = 30; charsv["?"] = 31; 
charsv["@"] = 32; charsv["A"] = 33; charsv["B"] = 34; charsv["C"] = 35; 
charsv["D"] = 36; charsv["E"] = 37; charsv["F"] = 38; charsv["G"] = 39;
charsv["H"] = 40; charsv["I"] = 41; charsv["J"] = 42; charsv["K"] = 43; 
charsv["L"] = 44; charsv["M"] = 45; charsv["N"] = 46; charsv["O"] = 47; 
charsv["P"] = 48; charsv["Q"] = 49; charsv["R"] = 50; charsv["S"] = 51; 
charsv["T"] = 52; charsv["U"] = 53; charsv["V"] = 54; charsv["W"] = 55; 
charsv["X"] = 56; charsv["Y"] = 57; charsv["Z"] = 58; charsv["["] = 59; 
charsv["\\"] = 60; charsv["]"] = 61; charsv["^"] = 62; charsv["_"] = 63; 
charsv["`"] = 64; charsv["a"] = 65; charsv["b"] = 66; charsv["c"] = 67; 
charsv["d"] = 68; charsv["e"] = 69; charsv["f"] = 70; charsv["g"] = 71; 
charsv["h"] = 72; charsv["i"] = 73; charsv["j"] = 74; charsv["k"] = 75; 
charsv["l"] = 76; charsv["m"] = 77; charsv["n"] = 78; charsv["o"] = 79; 
charsv["p"] = 80; charsv["q"] = 81; charsv["r"] = 82; charsv["s"] = 83;  
charsv["t"] = 84; charsv["u"] = 85; charsv["v"] = 86; charsv["w"] = 87; 
charsv["x"] = 88; charsv["y"] = 89; charsv["z"] = 90; charsv["{"] = 91; 
charsv["|"] = 92; charsv["}"] = 93; charsv["~"] = 94; charsv["•"] = 99; 
charsv["š"] = 104; charsv["œ"] = 106;

结果应该是:33,65,34,66,35,67

【问题讨论】:

标签: javascript arrays string loops


【解决方案1】:

使用split函数并将空字符串作为参数传递

var text = "asdfghj";
var arr = text.split(""); // returns ["a", "s", "d", "f", "g", "h", "j"]

然后要将每个字符转换为它的字符代码,您可以使用map

arr.map(function (char) { return char.charCodeAt(0); }); 
// returns [97, 115, 100, 102, 103, 104, 106]

编辑:我注意到您的 charsv 数组没有将每个字符映射到它的 ASCII 码。但是,即使在这种情况下,您也可以使用 map

arr.map(function (char) { return charsv[char]; }); 
// returns [65, 83, 68, 70, 71, 72, 74]

【讨论】:

  • 您好,感谢您的快速帮助,您的解决方案对我来说效果很好。
  • 您好,感谢您的快速帮助,您的解决方案对我来说效果很好。但是你能再帮我一次吗?如果我希望创建一个变量,其中来自 arr 的单个值乘以它们在 arr 中的位置,我必须做什么?例如 (65*1, 83*2 ,68*3 , 70*4, 71*5, 72*6, 74*7) 并且这些新值被添加到总和中? (65*1 + 83*2 + 68*3 + 70*4 + 71*5 + 72*6 + 74*7)
  • map中回调函数的第二个参数是index。你可以使用它:arr.map(function (char, i) { return charsv[char] * (i + 1); });。要对这些值求和,请获取新生成的数组并将所有值求和 var sum = 0; for(var i = 0; i &lt; arr.length; arr++) { sum += arr[i]; }。或者,对于求和,您可以使用 reduce arr.reduce(function (prev, cur) { return prev + cur; });。这是reduce函数developer.mozilla.org/en/docs/Web/JavaScript/Reference/…的文档
【解决方案2】:

split 字符串并遍历 charsv 键。

var charsv = new Array();
charsv[" "] = 128; charsv["!"] = 01; charsv['"'] = 02; charsv["#"] = 03;     
charsv["$"] = 04; charsv["%"] = 05; charsv["&"] = 06; charsv["’"] = 07;
charsv["("] = 08; charsv[")"] = 09; charsv["*"] = 10; charsv["+"] = 11; 
charsv[","] = 12; charsv["-"] = 13; charsv["."] = 14; charsv["/"] = 15; 
charsv["0"] = 16; charsv["1"] = 17; charsv["2"] = 18; charsv["3"] = 19;
charsv["4"] = 20; charsv["5"] = 21; charsv["6"] = 22; charsv["7"] = 23; 
charsv["8"] = 24; charsv["9"] = 25; charsv[":"] = 26; charsv[";"] = 27; 
charsv["<"] = 28; charsv["="] = 29; charsv[">"] = 30; charsv["?"] = 31; 
charsv["@"] = 32; charsv["A"] = 33; charsv["B"] = 34; charsv["C"] = 35; 
charsv["D"] = 36; charsv["E"] = 37; charsv["F"] = 38; charsv["G"] = 39;
charsv["H"] = 40; charsv["I"] = 41; charsv["J"] = 42; charsv["K"] = 43; 
charsv["L"] = 44; charsv["M"] = 45; charsv["N"] = 46; charsv["O"] = 47; 
charsv["P"] = 48; charsv["Q"] = 49; charsv["R"] = 50; charsv["S"] = 51; 
charsv["T"] = 52; charsv["U"] = 53; charsv["V"] = 54; charsv["W"] = 55; 
charsv["X"] = 56; charsv["Y"] = 57; charsv["Z"] = 58; charsv["["] = 59; 
charsv["\\"] = 60; charsv["]"] = 61; charsv["^"] = 62; charsv["_"] = 63; 
charsv["`"] = 64; charsv["a"] = 65; charsv["b"] = 66; charsv["c"] = 67; 
charsv["d"] = 68; charsv["e"] = 69; charsv["f"] = 70; charsv["g"] = 71; 
charsv["h"] = 72; charsv["i"] = 73; charsv["j"] = 74; charsv["k"] = 75; 
charsv["l"] = 76; charsv["m"] = 77; charsv["n"] = 78; charsv["o"] = 79; 
charsv["p"] = 80; charsv["q"] = 81; charsv["r"] = 82; charsv["s"] = 83;  
charsv["t"] = 84; charsv["u"] = 85; charsv["v"] = 86; charsv["w"] = 87; 
charsv["x"] = 88; charsv["y"] = 89; charsv["z"] = 90; charsv["{"] = 91; 
charsv["|"] = 92; charsv["}"] = 93; charsv["~"] = 94; charsv["•"] = 99; 
charsv["š"] = 104; charsv["œ"] = 106;

var input = document.getElementById('input');
var output = document.getElementById('output');

function lookup(event) {
  var s = input.value.split('');
  var result = [];
    for (var i = 0; i < s.length; i++) {
     result.push(charsv[s[i]]);
    }
    output.innerHTML = s.join(',') + '<br>' + result.join(',');
}
input.onkeyup = lookup;
lookup();
 
<input type="text" id="input" value="AaBbCc">
<div id="output"></div>

【讨论】:

    【解决方案3】:

    var charsv = new Array();
    charsv[" "] = 128; charsv["!"] = 01; charsv['"'] = 02; charsv["#"] = 03;     
    charsv["$"] = 04; charsv["%"] = 05; charsv["&"] = 06; charsv["’"] = 07;
    charsv["("] = 08; charsv[")"] = 09; charsv["*"] = 10; charsv["+"] = 11; 
    charsv[","] = 12; charsv["-"] = 13; charsv["."] = 14; charsv["/"] = 15; 
    charsv["0"] = 16; charsv["1"] = 17; charsv["2"] = 18; charsv["3"] = 19;
    charsv["4"] = 20; charsv["5"] = 21; charsv["6"] = 22; charsv["7"] = 23; 
    charsv["8"] = 24; charsv["9"] = 25; charsv[":"] = 26; charsv[";"] = 27; 
    charsv["<"] = 28; charsv["="] = 29; charsv[">"] = 30; charsv["?"] = 31; 
    charsv["@"] = 32; charsv["A"] = 33; charsv["B"] = 34; charsv["C"] = 35; 
    charsv["D"] = 36; charsv["E"] = 37; charsv["F"] = 38; charsv["G"] = 39;
    charsv["H"] = 40; charsv["I"] = 41; charsv["J"] = 42; charsv["K"] = 43; 
    charsv["L"] = 44; charsv["M"] = 45; charsv["N"] = 46; charsv["O"] = 47; 
    charsv["P"] = 48; charsv["Q"] = 49; charsv["R"] = 50; charsv["S"] = 51; 
    charsv["T"] = 52; charsv["U"] = 53; charsv["V"] = 54; charsv["W"] = 55; 
    charsv["X"] = 56; charsv["Y"] = 57; charsv["Z"] = 58; charsv["["] = 59; 
    charsv["\\"] = 60; charsv["]"] = 61; charsv["^"] = 62; charsv["_"] = 63; 
    charsv["`"] = 64; charsv["a"] = 65; charsv["b"] = 66; charsv["c"] = 67; 
    charsv["d"] = 68; charsv["e"] = 69; charsv["f"] = 70; charsv["g"] = 71; 
    charsv["h"] = 72; charsv["i"] = 73; charsv["j"] = 74; charsv["k"] = 75; 
    charsv["l"] = 76; charsv["m"] = 77; charsv["n"] = 78; charsv["o"] = 79; 
    charsv["p"] = 80; charsv["q"] = 81; charsv["r"] = 82; charsv["s"] = 83;  
    charsv["t"] = 84; charsv["u"] = 85; charsv["v"] = 86; charsv["w"] = 87; 
    charsv["x"] = 88; charsv["y"] = 89; charsv["z"] = 90; charsv["{"] = 91; 
    charsv["|"] = 92; charsv["}"] = 93; charsv["~"] = 94; charsv["•"] = 99; 
    charsv["š"] = 104; charsv["œ"] = 106;
    
    var result = 'AaBbCc'.split('').map(function(char){
        return charsv[char];
    });
    console.log(result);

    【讨论】:

      最近更新 更多