Как вернуть все имена со второй буквой "h" - из массива имен? - PullRequest
0 голосов
/ 07 января 2019

Мне нужно написать функцию, которая возвращает всех пользователей со второй буквой «h» в их имени.

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

Я начал кодировать что-то вроде этого, но оно не работает.

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

Я новичок в JavaScript и не знаю, с чего начать.

Ответы [ 7 ]

0 голосов
/ 07 января 2019
var users = ["Roman","Sherry","Sandrah","Shamaika"];
var t=users.filter((x)=>x.indexOf('h')==1)
console.log(t);

Это будет делать

0 голосов
/ 07 января 2019

Следующая функция вернет элементы массива (как массив результатов), которые имеют второй символ в виде «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" ]
0 голосов
/ 07 января 2019

Вы можете сделать что-то вроде этого:

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

Таким образом, по сути, проверяется значение второй буквы и возвращается эти имена в новом массиве, если он соответствует 'h';

0 голосов
/ 07 января 2019

В настоящее время ваш код ищет первый индекс 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);
0 голосов
/ 07 января 2019

Вы можете отфильтровать массив, взяв функцию, которая проверяет символ с индексом 1.

function checkLetter1(string) {
    return string[1] === 'h';
}

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

console.log(users.filter(checkLetter1));
0 голосов
/ 07 января 2019

Вы можете использовать filter.

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

let filteredUsers = users.filter(user => user.charAt(1) === 'h');
console.log(filteredUsers);
0 голосов
/ 07 января 2019

Вам не хватает фильтр

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

var index = users.filter(a=> a.indexOf("h") === 1);
console.log(index);
...