我有一个从a到z的整个字母数组。我也有一个输入字段。我希望能够从字母数组中的输入字段中找到每个字符的索引,但我的函数不起作用。我已经尝试将输入字段中的文本存储到一个数组中,我也尝试过使用一个命名函数,但是它都没有用。
<input type="text" id="plaintext" placeholder="Plaintext">
<div id="start"><div id="start_text">Start</div></div>
let plaintext = document.getElementById("plaintext");
let alph = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
let startB = document.getElementById("start");
let plainParser = [];
startB.addEventListener('click', () => {
for(let i=0; i < alph.length; i++){
console.log(alph.findIndex( () => plainParser.push(plaintext.value.split(''))));
};
});
我想...从字母数组中的输入字段中查找每个字符的索引
然后而不是从0循环到25:
for(let i=0; i < alph.length; i++){
你应该循环输入中的每个字符:
for (let c of plaintext.value) {
我想...从字母数组中的输入字段中查找每个字符的索引
你有角色,所以找到索引:
alph.indexOf(c)
V'La酒店。
let plaintext = document.getElementById("plaintext");
let alph = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
let startB = document.getElementById("start");
startB.addEventListener('click', () => {
for (let c of plaintext.value) {
console.log(alph.indexOf(c));
}
});
不需要数组的快捷方式是使用每个字符的charCode。
a
从97开始
const str = 'abc';
for(let s of str){
console.log(s.charCodeAt(0) - 97);
}
这是我认为您正在寻找的稍微重构的版本:
const alphabet = 'abcdefghijklmnopqrstuvwxyz';
const result = document.querySelector(".result");
const plaintext = document.getElementById("plaintext");
const startB = document.querySelector(".start");
startB.addEventListener('click', () => {
const source = plaintext.value;
result.innerText = '';
if (!source) return;
const indices = [];
for (let char of source) {
indices.push(alphabet.indexOf(char));
}
result.innerText = indices.join(', ');
});
<input type="text" id="plaintext" placeholder="Plaintext">
<button class="start">Start</button>
<div class="result" style="font-family: monospace;"></div>
这是一个触发keyup事件的演示,并在每次击键时将用户输入转换为Unicode。如果您希望将用户输入转换为0到25索引,则会有备用代码注释。
const az = document.forms[0];
const intArray = (node) => {
return JSON.parse(JSON.stringify(`[${node.textContent}]`));
};
const dataKey = event => {
const txt = event.target.value;
const view = event.currentTarget.elements.view;
/* swap lines if you want indexes 0 to 25
view.textContent += (event.which - 65) + ', ';
*/
view.textContent += event.which + ', ';
};
az.onkeyup = event => {
dataKey(event);
let result = intArray(az.elements.view);
console.log(result);
};
:root {
font: 400 16px/1.3 Consolas
}
textarea,
output {
display: block;
font: inherit
}
fieldset {
width: fit-content;
}
#text {
display: block;
width: 98%;
}
<form id='az'>
<fieldset>
<legend>Unicode UTF-16</legend>
<textarea id="text"></textarea>
<output id='view'></output>
</fieldset>
</form>