【问题标题】:How to return all names with second letter "h" - from an array of names?如何从名称数组中返回所有带有第二个字母“h”的名称?
【发布时间】:2019-06-01 23:07:20
【问题描述】:

我必须编写一个函数来返回所有用户名中第二个字母为“h”的用户。

var users = ["Roman","Sherry","Sandrah","Shamaika"];

我开始编写类似的代码,但它不起作用。

function letter(){
    var index = users.indexOf("h") == [1];
    return(index);
}

我是 JavaScript 新手,不知道从哪里开始。

【问题讨论】:

  • 试试users.filter((user) => user.chatAt(1) === 'h')

标签: javascript arrays string indexof


【解决方案1】:

以下函数将返回第二个字符为“h”的数组元素(作为结果数组):

var users = ["Roman", "Sherry", "Sandrah", "Shamaika"];

function getMyUsers() {
    return users.map(user => user.split(""))
                .filter(userChars => userChars[1] == "h")
                .map(userChars => user.join(""));
};

console.log(getMyUsers());

输出:

[ "Sherry", "Shamaika" ]


编辑:getMyUsers 函数也可以以更详细的方式编码,如下所示:

function getMyUsers2() {

    let usersWithH = [];

    for (let user of users) {
        let userChars = user.split("");
        if (userChars[1] == "h") {
            usersWithH.push(user);
        }
    }

    return usersWithH;
}

console.log(getMyUsers2()); // prints [ "Sherry", "Shamaika" ]

【讨论】:

    【解决方案2】:

    目前,您的代码正在查找用户名数组中h 的第一个索引,这将返回不正确的结果。考虑使用Array#filter 方法来选择与您的第二个字符为h 的条件相匹配的名称,如下所示:

    var users = ["Roman","Sherry","Sandrah","Shamaika"];
    
    function letter(name){
        // Return true if the second character of name is an 'h'
        return name[1] === 'h';
    }
    
    // Use filter() method to get array of items that satisfy
    // the criteria of your letter() function
    var filteredUsers = users.filter(letter);
    
    console.log(filteredUsers);

    【讨论】:

      【解决方案3】:
      var users = ["Roman","Sherry","Sandrah","Shamaika"];
      var t=users.filter((x)=>x.indexOf('h')==1)
      console.log(t);
      

      这样就可以了

      【讨论】:

        【解决方案4】:

        你可以这样做:

        function usersWithSecondH(users) {
          return users.filter(user => user[1] === 'h');
        }
        

        所以本质上是检查第二个字母的值,如果匹配 'h',则在新数组中返回这些名称;

        【讨论】:

          【解决方案5】:

          你不见了filter

          var users = ["Roman","Sherry","Sandrah","Shamaika"];
          
          var index = users.filter(a=> a.indexOf("h") === 1);
          console.log(index);

          【讨论】:

          • 为什么 1 作为数组?
          • @quirimmo 抱歉从问题中复制了该内容,现在更正
          【解决方案6】:

          您可以通过使用检查索引1 处的字符的函数来过滤数组。

          function checkLetter1(string) {
              return string[1] === 'h';
          }
          
          var users = ["Roman", "Sherry", "Sandrah", "Shamaika"];
          
          console.log(users.filter(checkLetter1));

          【讨论】:

          • 你被浪费了:)
          【解决方案7】:

          您可以使用filter

          const users = ["Roman","Sherry","Sandrah","Shamaika"];
          
          let filteredUsers = users.filter(user => user.charAt(1) === 'h');
          console.log(filteredUsers);

          【讨论】:

            猜你喜欢
            • 2021-08-30
            • 1970-01-01
            • 2014-03-24
            • 1970-01-01
            • 2014-12-17
            • 2010-12-08
            • 2019-06-03
            • 2013-07-13
            • 1970-01-01
            相关资源
            最近更新 更多