在字符数组中循环

Looping Through an Array of Characters

本文关键字:循环 数组 字符      更新时间:2023-09-26

我想为一组不断变化的特定字符循环一个数组。从那时起,我想切换字母的大小写,有人告诉我要使用这个特定的代码,但我无法使用它。代码必须循环通过字符数组,其中字符来自"输入"文本框。我该怎么解决这个问题?

我应该提到的是,我在高中的课堂上这样做,所以我在编码方面并不完美


    <html> 
      <head> 
        <script type="text/javascript"> 
    function toggleCase() { 
        var i = document.getElementById("input").value.length;
        var word = document.getElementById("input").value;
        var chop =new array(i);
        for (a=i; a <= i; a++) {
            character[i] = word.slice(i-1,i)
            if (character[i] == character[i].toUpperCase;){
                character[i] = character[i].toLowerCase();
            }
            else {
                character[i] = character[i].toUpperCase();
            }
        }
        var final
        for (a=i; a <= i; a++) {
            final += character[i];
        }
        document.getElementById("output").value = final
    }
        </script> 
      </head> 
      <body> 
        <p>Enter letters for conversion:</p> 
        <form> 
          <input type="text" name="input" id="input" value="sample" maxlength="10"><br />
          <input type="text" name="output" id="output" value="" /> <br/>
          <input type="checkbox" name="toggle" value="ToggleCase" onClick="toggleCase(this.form)">Toggle Case<br/>
        </form> 
      </body> 
    </html> 

也许你应该看看一些api和howtos,但以下是你的代码:

<html> 
<head> 
<script type="text/javascript"> 
function toggleCase() { 
  var text = document.getElementById("input").value;
  var character = new Array(text.length);
  for (i=0, a = text.length; i < a; i++) {
    character[i] = text[i];
    if (character[i] == character[i].toUpperCase){
      character[i] = character[i].toLowerCase();
    }
    else {
      character[i] = character[i].toUpperCase();
    }
  }
  document.getElementById("output").value = character.join('');
}
</script> 
</head> 
<body> 
<p>Enter letters for conversion:</p> 
<form> 
<input type="text" name="input" id="input" value="sample" maxlength="10"><br />
<input type="text" name="output" id="output" value="" /> <br/>
<input type="checkbox" name="toggle" value="ToggleCase" onClick="toggleCase()">Toggle Case<br/>
</form> 
</body> 
</html> 
function toggleCase() { 
   var str = document.getElementById("input").value;
   for (var i=0; i<str.length; i++) {
     str[i] = (str[i]==str[i].toUpperCase() ? str[i].toLowerCase() : str[i].toUpperCase());
   }
   document.getElementById("output").value = str;
}

这是一个for循环来完成任务。并且记住CCD_ 1和CCD_

您可能需要了解String的split方法。

var str = 'foo bar baz';

将字符串转换为char数组的最简单方法是将空字符串传递到split方法中。

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

我的toggedCharacters方法只返回一个字符数组,所以如果你想作为字符串返回,你可以制作一个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;

哦,又是一个仅供参考的,因为你是一个初学者。确保您知道如何使用浏览器的控制台。

如果你使用的是火狐浏览器,请使用firebug应用程序。

Chrome,按Ctrl-Shift-C。

IE也有一个,我只是不想用它。

与制作html演示页面并假设代码正常工作相比,控制台使JS更容易进行实验。

此外,这些开发人员工具可以向您展示对象的底层方法。它为学习JS提供了一种既好又快捷的方法。