Поиск в массиве объектов ключей, содержащих два слова

Всем привет!

Только учусь JavaScript, столкнулся со следующей задачей: в программе задана переменная users, которая хранит в себе массив. Элементы данного массива являются объектами. Требуется определить индекс элемента, значение свойства role которого содержит больше одного слова. Результат вывести в консоль разработчика.

Пробую следующий код, но не подходит. Подскажите, пожалуйста, что не так - как-будто упустил какой-то момент при обучении. Буду рад уяснить и выучить, что упускаю:

const users = [{
    login: "user1",
    role: "Admin"
  },
  {
    login: "user2",
    role: "State user"
  },
  {
    login: "user3",
    role: "Moderator"
  }
];

function findSpace(users) {
  if (users.role.includes(/\s/)) {
    return users.role
  }
}
console.log(users.findIndex(findSpace));


Ответы (1 шт):

Автор решения: Maxim

String.prototype.includes(аргумент не может быть регулярным выражением) Можно просто изменить регулярное выражение на пробел (это самое примитивное решение)

function findSpace(user) {
    return user.role.includes(' ');
}

Более хороший способ будет выглядеть так, данное регулярное выражение будет сопоставлять любую последовательность символов без пробелов (здесь есть нюанс в том, что если строка будет пустая то String.prototype.match() - вернет null и вызов null.length даст ошибку):

function findSpace(user) {
    return user.role.match(/\S+/g).length > 1;
}

Чтобы избежать ошибки из примера выше, можно использовать String.prototype.split():

function findSpace(user) {
    return user.role.split(/\b\W+\b/).length > 1;
}

UPD P.S. Всё написанное выше, преследует исключительно научно-просветительные цели =))

Судя по комментариям автора, возникли некоторые сложности, вот ваш рабочий вариант, то что нужно скопировать к себе в файл:

const users = [
    { login: 'user1', role: 'Admin' },
    { login: 'user2', role: 'State user' },
    { login: 'user3', role: 'Moderator' },
];
function findSpace(user) {
    return user.role.split(/\b\W+\b/).length > 1;
}
console.log(users.findIndex(findSpace));
→ Ссылка