Javascript 在字符数组中循环
我想为一组不断变化的特定字符循环一个数组。从那时起,我想切换字母的大小写,我被告知要使用这个特定的代码,但我无法让它工作。代码必须在字符数组中循环,其中的字符来自输入文本框。我怎样才能解决这个问题 我应该提到的是,我是在高中的课堂上做这项工作的,所以我在编码方面并没有近乎完美的地方Javascript 在字符数组中循环,javascript,arrays,loops,textbox,toggle,Javascript,Arrays,Loops,Textbox,Toggle,我想为一组不断变化的特定字符循环一个数组。从那时起,我想切换字母的大小写,我被告知要使用这个特定的代码,但我无法让它工作。代码必须在字符数组中循环,其中的字符来自输入文本框。我怎样才能解决这个问题 我应该提到的是,我是在高中的课堂上做这项工作的,所以我在编码方面并没有近乎完美的地方 也许您应该看看一些api和Howto,但以下是您的代码: 这是一个完成任务的for循环。记住.toUpperCase和.toLowerCase是函数您可能想看看字符串的拆分方法 var str = 'foo bar
也许您应该看看一些api和Howto,但以下是您的代码:
这是一个完成任务的for循环。记住.toUpperCase和.toLowerCase是函数您可能想看看字符串的拆分方法
var str = 'foo bar baz';
var charArray = str.split(''):
// charArray === ['f','o','o' ... 'b','a','z'];
将字符串转换为字符数组的最简单方法是将空字符串传递给split方法
var str = 'foo bar baz';
var charArray = str.split(''):
// charArray === ['f','o','o' ... 'b','a','z'];
另外,为了便于参考,将空格字符传递到split中会得到一个单词数组
var wordArray = str.split(' ');
// wordArray === ['foo', 'bar', 'baz'];
我有点不清楚要解决什么问题,但看起来需要一个函数将大写字母转换为小写字母,反之亦然
var userInput = document.getElementById('someTextBox');
// If you want to be fancy you could use JQuery
// var userInput = $(#someTextBox').value()
function toggledCase( str ) {
var characters = str.split('');
// The split method still uses iteration so should be able to say it
// satisfies the argument of looping through each character.
// Split just provides a good abstraction to interface with.
var toggledCharacters = [];
var i;
var ch;
for( i in characters ) {
// For in loops on strings will return the indexes instead
// of the characters
ch = characters[i];
if( ch.toUpperCase() === ch ){
toggledCharacters.push( ch.toLowerCase() );
} else {
toggledCharacters.push( ch.toUpperCase() );
}
// If you like one-liners,
// the conditional if statement could be replace with a ternay statement.
// toggledCharacters.push( ( ch.toUpperCase() === ch ) ?
// ch.toLowerCase() : ch.toUpperCase();
}
return toggledCharacters;
}
我的toggledCharacters方法只返回一个字符数组,所以如果您想作为字符串返回,可以创建一个for循环
var arr = toggledCharacters('Foo'); // str = 'fOO';
var str = '';
var i, ch;
for ( i in arr ) {
str += arr[i]; // += is just a short hand notation of saying
// str = str + arr[i];
}
如果您很懒,并且喜欢单行程序,那么可以看看函数式编程。这有点超出范围,因为你还在上高中
var arr = toggledCharacters('Foo'); // str = 'fOO';
var str = arr.reduce( function(str, ch) {
return str + ch;
} );
无论如何,在我看来,这比老师概述的要干净得多
function toggledCharacters(input) {
input = input.split('');
var output = [];
var i, ch;
for( i in input ) {
output.push( ( input[i].toUpper() === input[i] ) ?
input[i].toLower() : input[i].toUpper()
);
}
return output.reduce(
function(str, ch) {
return str + ch;
}
);
}
编辑:
哦,我只是注意到,在代码中,没有任何地方是正在计算的复选框布尔值
var checkBox = document.getElementByName('toggle');
var inputTextBox = document.getElementById('input');
var outputTextBox = document.getElementById('output');
var result = inputTextBox.value;
if( checkBox.checked ) {
result = toggleCase( result );
}
outputTextBox.value = result;
哦,另一个供参考,因为你是初学者。确保您知道如何使用浏览器的控制台
如果您使用的是Firefox,请使用firebug应用程序
Chrome,按Ctrl-Shift-C
我也有一个,我只是不想用它
与制作html演示页面并假设代码正常工作相比,控制台更容易使用JS进行实验
另外,这些开发工具可以向您展示对象的底层方法。这是一种快速学习JS的好方法。javascript而不是java,使用正确的标记调用document.getElementById会让您在该循环中多次遇到性能问题。您到处都缺少分号!这些for循环只会让您感到困惑,因为您使用a作为计数器,而iHere引用是一个JSFIDLE供您使用
var checkBox = document.getElementByName('toggle');
var inputTextBox = document.getElementById('input');
var outputTextBox = document.getElementById('output');
var result = inputTextBox.value;
if( checkBox.checked ) {
result = toggleCase( result );
}
outputTextBox.value = result;