根据用户输入来索引数组中的字符

时间:2019-04-11 00:09:47

标签: javascript arrays

我有一个从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(''))));
    };
});

4 个答案:

答案 0 :(得分:1)

不需要数组的快捷方式是使用每个字符的charCode。

a从97开始

const str = 'abc';

for(let s of str){
  console.log(s.charCodeAt(0) - 97);  
}

答案 1 :(得分:0)

  

我想…从字母数组的输入字段中找到每个字符的索引

然后,而不是从0循环到25:

for(let i=0; i < alph.length; i++){

您应该遍历输入中的每个字符:

for (let c of plaintext.value) {
  

我想... 在字母数组的输入字段中找到每个字符的索引

您拥有角色,因此找到索引:

alph.indexOf(c)

v’là。

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));
    }
});

答案 2 :(得分:0)

以下是我认为要查找的内容的重构版本:

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>

答案 3 :(得分:-1)

这里是一个演示,该演示会在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>