что за ошибка TypeError: Cannot read property 'length' of null

функция принимает массив строк и возвращает только те, которые содержат не менее 5 гласных (a, e, i, o, u).

function filter5Vowels(obj) {
    let array = obj.map(vowels5 => {
        const regex = /[aeiouAEIOU]/g
        const resRegex = new RegExp(regex)
        let str = vowels5.match(resRegex)
        if (str.length >= 5) {
            return vowels5
        }
        return null
    })
    let arr = []
    arr = array.filter(function (s) {
        return s !== null
    })
    return arr
}

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

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

Метод .match возвращает null, в случае, если не было найдено ни одного совпадения.

Для решения можно либо добавить соответствующую проверку, либо воспользоваться Optional chaining оператором.


Также стоит обратить внимание, что первый map можно заменить на filter, и сразу получать итоговую коллекцию:

function filter5Vowels(obj) {
    return obj.filter(vowels5 => {
        const regex = /[aeiouAEIOU]/g;
        const resRegex = new RegExp(regex);
        let str = vowels5.match(resRegex);
        return (str?.length >= 5);
    })
}
→ Ссылка