2017-10-28 6 views
0

私はウェブを検索していましたが、私は現在の問題についていくつかの例を見つけましたが、すべて同じトピック、すなわちテキストの解読を扱っているようです。しかし、私は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/

答えて

0

ここでは、実用的で実用的な例があり、小文字の「a」を-1にすると小文字の「ö」の最後の文字に、-2を「ä '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++) { 
 
\t values[inputs[i].name] = inputs[i].value; 
 
} 
 
function outputText(number){ 
 
    var newtext = []; 
 
\t var inputtext = document.getElementById('text_to_be_shifted').value.split(''); 
 
    inputtext.forEach(letter=> { 
 
\t \t \t var ind_ofLetter = alpabhet.indexOf(letter); 
 
\t \t ind_ofLetter = ind_ofLetter + number; 
 
\t \t if (ind_ofLetter < 0){ 
 
\t \t ind_ofLetter = alpabhet.length + ind_ofLetter; 
 
\t \t }else if(ind_ofLetter > alpabhet.length-1){ 
 
\t \t ind_ofLetter = ind_ofLetter - alpabhet.length; 
 
\t \t } 
 
\t \t newtext.push(alpabhet[ind_ofLetter]); 
 
    }); 
 
    document.getElementsByClassName('output')[0].innerHTML = newtext.join(''); 
 
} 
 

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

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

 
document.onkeydown = checkKey; 
 

 
function checkKey(e) { 
 

 
\t e = e || window.event; 
 

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

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

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

:1とアルファベットの最後の文字をシフトすることは 'B' e.t.cに2で、 'A' に設定します
0

あり、その上にループする点はありません。 (あなたは、ループのためにあなたがのcharAtを利用することができ、あなたの中の要素

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

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

をシフトするマップ機能を使用することができます

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

は、配列を取得するには、次のようなものを使用する必要があります)関数を使用して、指定されたインデックスの個々の文字を取得します。このような 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); 
} 

何かが各インデックスの単一文字であなたの配列を取得するために動作するはずです:W3学校が必要な場合は、この機能に良い教訓を持っています。

関連する問題