#javascript #arrays
Вопрос:
Я пытаюсь написать цикл, который проходит через массив, определяет, является ли значение числом, затем проверяет, является ли оно нечетным числом, и если да, то добавляет нечетное число в oddTotal.
function addOdds(numArray) {
//implement this function
var oddTotal = 0
for (var i=0; i < numArray.length; i ) { //this iterates through the array
if (numArray[i] !== typeof(value)) {
i
}
else if (numArray[i] % 2 !== 0) { //this checks if the number value is odd (assuming that it is a number value)
oddTotal = numArray[i];
}
}
return oddTotal;
}
var numArray = [1, 11, 20, 21, 30, 'fat'];
console.log (addOdds(numArray));
Моя функция работает, если я предполагаю, что все значения являются числами, но не могу игнорировать любые другие типы данных.
Комментарии:
1. Как ты думаешь
numArray[i] !== typeof(value)
, что он делает? Пожалуйста, ознакомьтесь с документацией поtypeof
.
Ответ №1:
Я воспользовался Номером.isInteger, и это решение сработало!
function addOdds(numArray) {
//implement this function
var oddTotal = 0;
for (var i=0; i < numArray.length; i ) { //this iterates through the array
//this checks if the number value is odd (assuming that it is a number value AND if the number is an integer)
if (numArray[i] % 2 !== 0 amp;amp; Number.isInteger(numArray[i]) ) {
oddTotal = numArray[i];
}
}
return oddTotal;
}
var numArray = [1, 11, 20, 21, 30, 'fat', ];
console.log (addOdds(numArray));
Ответ №2:
Вы можете проверить, не является ли каждый элемент массива целым числом ! Number.isInteger(numArray[i])
или числом typeof numArray[i] !== 'number'
function addOdds(numArray) {
var oddTotal = 0
for (var i=0; i < numArray.length; i ) {
if(! Number.isInteger(numArray[i])) {
continue;
} else if (numArray[i] % 2 !== 0) {
oddTotal = numArray[i];
}
}
return oddTotal;
}
var numArray = [1, 11, 20, 21, 30, 'fat'];
console.log (addOdds(numArray));
Ответ №3:
Вы можете продолжить работу с функцией уменьшения для описанного выше сценария:
numbers = [1,2,3,4,5,6,7,8,9,'js','abc'];
reducer = (sum, currentValue) => currentValue%2!=0 amp;amp; !isNaN(currentValue) ? sum currentValue : sum;
console.log(numbers.reduce(reducer,0));
«0» — это начальное значение суммы.