【问题标题】:loop over array using charAt to get first letter of each value in javascript使用charAt循环数组以获取javascript中每个值的首字母
【发布时间】:2014-01-18 19:52:56
【问题描述】:

我是 JS 新手,正在尝试了解 chartAt。我创建了一个问题,我想通过一个数组并使用 charAt 从我的数组中提取每个值的第一个字符。我的代码有点卡住了。

var myArray = ['adam', 'bianca', 'cat', 'dennis'];
var myFunc = function (letter) {
    for (var i = 0; i < letter.length; i += 1) {
        letter.charAt(0);
        console.log(letter.charAt(0));
    }
}

【问题讨论】:

    标签: javascript arrays charat


    【解决方案1】:

    在您的迭代循环中,letter 是传递给函数myFunc() 的数组。您需要访问它的元素,您正在通过i 对其进行迭代。使用letter[i].charAt(0) 而不是letter.charAt(0)

    var myArray = ['adam', 'bianca', 'cat', 'dennis'];
    var myFunc = function (letter) {
        for (var i = 0; i < letter.length; i += 1) {
            // Use the index i here
            console.log(letter[i].charAt(0));
        }
    }
    
    // Call your function, passing in the array you defined:
    myFunc(myArray);
    // a
    // b
    // c
    // d
    

    所以你对String.prototype.charAt()的理解是正确的,但是循环迭代是错误的。

    【讨论】:

    【解决方案2】:

    如果您要做的是遍历数组中的每个元素并获取第一个字母,则需要遍历 数组,而不是单词(您在您的解决方案。所以你会有这样的东西:

    for( var i=0; i<myArray.length; i++ ) {
        console.log( myArray[i].charAt(0) );
    }
    

    或者:

    myArray.forEach( function(word){
        console.log( word.charAt(0) );
    });
    

    此外,您正在创建一个函数 (myFunc),但实际上您从未真正调用它。

    【讨论】:

      【解决方案3】:

      似乎是对的,只是你在循环中编写了一个常量而不是使用循环变量:

      var myArray = ['adam', 'bianca', 'cat', 'dennis'];
      var myFunc = function (letter) {
          for (var i = 0; i < letter.length; i += 1) {
              letter.charAt(i);
              console.log(letter.charAt(i));
          }
      }
      
      
      > myFunc(myArray[1])
      b VM622:6
      i VM622:6
      a VM622:6
      n VM622:6
      c VM622:6
      a VM622:6
      undefined  
      

      您可能还想打印出整个数组:

      for (var word in myArray) {
          word = myArray[word];
          console.log("");
          myFunc(word);
      } 
      

      【讨论】:

        【解决方案4】:

        如果你使用 jQuery

        var myArray = ['adam', 'bianca', 'cat', 'dennis'];
        $.each(myArray,function(){console.log(this.charAt(0))});
        

        【讨论】:

          【解决方案5】:

          如果你使用的是 ES6

          const myArray = ['adam', 'bianca', 'cat', 'dennis'];
          myArray.forEach(myFunc => console.log(myFunc.charAt(0)));
          
          //output
          a
          b
          c
          d
          

          如果你想把输出放在一个数组中

          const myArray = ['adam', 'bianca', 'cat', 'dennis'];
          const myFunc = myArray.map(name => name.charAt(0));  
          
          console.log(myFunc); 
          //output
          [ 'a', 'b', 'c', 'd' ]
          

          // 在数组上调用.map()时,它接受一个回调函数的参数并返回一个新数组

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-04-20
            • 1970-01-01
            • 2019-04-26
            • 2022-11-26
            • 2023-02-02
            • 2015-12-04
            • 2021-05-14
            • 2015-01-26
            相关资源
            最近更新 更多