在alpabhet

时间:2017-10-28 16:00:10

标签: javascript

我一直在网上搜索,我找到了一些关于我当前问题的例子,所有这些似乎都在解决同一个话题:解密文本。但我找不到任何用javascript编写的东西。我试了一下,但是当我尝试将字符串转换为数组时,我被卡住了。

让我们说当前的字母是

var alpabhet=[
    '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','å','ä','ö'
];

我有一个字符串ammj,我在输入中输入。然后我希望能够使用左右键移动并查看当前班次的输出。因此,两(2)的移位将导致字符串cool。字符串åjjg的班次为5也会产生cool

所以我主要担心的是,如何使用javascript将用户输入转换为数组?

我有一个输入文件:<input id="text_to_be_shifted" type="text">然后我试图循环输入并排列成一个数组

var values = {};
var inputs = document.getElementById('text_to_be_shifted');
for( var i = 0; i < inputs.length; i++ ) {
    values[inputs[i].name] = inputs[i].value;
}

看看我的小提琴:http://jsfiddle.net/p8kqmdL1/

3 个答案:

答案 0 :(得分:0)

只有一个输入,所以循环没有意义。

要获得数组,您应该使用类似:

document.getElementById('text_to_be_shifted').split("");

然后,您可以使用map函数来移动元素

let arr = document.getElementById('text_to_be_shifted').split("");

let shifted = arr.map((c) => alpabhet[(alpabhet.indexOf(c) + 1) % alpabhet.length]).join("");

答案 1 :(得分:0)

在你的for循环中,你可以利用charAt()函数获取给定索引处的单个字符。如果需要,W3学校可以很好地掌握这个功能:https://www.w3schools.com/jsref/jsref_charat.asp

var inputArray = [];
var inputs = document.getElemenById('text_to_be_shifted');
for(let i = 0; i < inputs.length; i++){
     inputArray[i] = inputs.charAt(i);
}

这样的事情应该可以让你得到一个在每个索引上都有一个字母的数组。

答案 2 :(得分:0)

这里有一个实时和有效的例子,带有一个支票,以便将字母“a”换成-1,将其转换为字母“ö”,-2到“ä”e.t.c的最后一个字母。并用1替换最后一个字母表将它设置为'a',用2到'b'e.t.c:

  var alpabhet=[
'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','å','ä','ö'
];

var values = {};
var inputs = document.getElementById('text_to_be_shifted');
for( var i = 0; i < inputs.length; i++ ) {
	values[inputs[i].name] = inputs[i].value;
}
function outputText(number){
   var newtext = [];
	 var inputtext = document.getElementById('text_to_be_shifted').value.split('');
   inputtext.forEach(letter=> {
			var ind_ofLetter = alpabhet.indexOf(letter);
		ind_ofLetter = ind_ofLetter + number;
		if (ind_ofLetter < 0){
		   ind_ofLetter = alpabhet.length + ind_ofLetter;
		}else if(ind_ofLetter > alpabhet.length-1){
		   ind_ofLetter = ind_ofLetter -  alpabhet.length;
		}
		newtext.push(alpabhet[ind_ofLetter]);
   });
   document.getElementsByClassName('output')[0].innerHTML = newtext.join('');
}

function shiftUp() {
	var currentShift = document.getElementById('currentShift');
	var number = currentShift.innerHTML;
	number++;
	currentShift.innerHTML = number;
	 outputText(number);
}

function shiftDown() {
	var currentShift = document.getElementById('currentShift');
	var number = currentShift.innerHTML;
	number--;
	currentShift.innerHTML = number;
	 outputText(number);
}

document.onkeydown = checkKey;

function checkKey(e) {

	e = e || window.event;

	if (e.keyCode == '37') {
	   console.log('left arrow')
	   shiftDown()
	}
	else if (e.keyCode == '39') {
		console.log('right arrow')
		shiftUp()
	}

}
<b>Current shift: </b><span id="currentShift">0</span>

<br><input id="text_to_be_shifted" type="text">
<div id='output' class="output"></div>