function isNumber(val) {
return typeof val === 'number';
}
let allNumbers = [1, 2, 4, 5, 6, 7, 8]
console.log(isNumber(allNumbers))
При обработке массива выдает false. Если написать содержимое массива в виде аргументов, то true.
Как обработать числовой массив, чтобы метод вернул true?
Для обработки массива Вам потребуется немного иной подход)
Функция не срабатывает для каждого аргумента переданного массива отдельно. Она отрабатывает, как ей и полагается, для одного переданного значения
В Вашем случае, когда Вы отдаете ей массив, то получаете следующую картину:
function isNumber(val) {
console.log(typeof val); // object
return typeof val === 'number';
}
let allNumbers = [1, 2, 4, 5, 6, 7, 8];
console.log(isNumber(allNumbers)); // false
Чтобы проверить, все ли элементы массива удовлетворяют заданному условию, Вам следует использовать метод Array.prototype.every(), который как раз таки
проверяет, удовлетворяют ли все элементы массива условию, заданному в передаваемой функции.
Приведу простенький пример:
function isNumber(val) {
return typeof val === 'number';
}
// Обозначим функцию для обработки массива
function areNumbers(arr) {
// Передадим в every() лямбду, которая принимает элемент массива и возвращает bool
return arr.every(x => isNumber(x));
// Или короче:
// return arr.every(isNumber);
}
let allNumbers = [1, 2, 4, 5, 6, 7, 8];
console.log(areNumbers(allNumbers)); // true
Надеюсь, мой ответ помог Вам разобраться в Вашей проблеме!
Удачи в Ваших начинаниях!
Ты передаешь в функцию массив чисел, а у массивов в JS тип "object". Используй метод массива "forEach" для обработки каждого элемента отдельно
Сборка персонального компьютера от Artline: умный выбор для современных пользователей