Может быть вот так?
function checkEven(array) {
return array.every(e => e % 2 === 0)
}
function log(value) {
console.log(checkEven(value))
}
log([2, 4, 6]) // true
log([1, 2, 3]) // false
log([2, 1, 2]) // false
log([1, 3, 5]) // false
А вообще лучше будет так (Должно работать быстрее чем вариант с every(... => ...)
):
function checkEven(array) {
let i = 0
while(i < array.length) {
if(array[i] % 2 !== 0) {
return false
}
i++
}
return true
}
function log(value) {
console.log(checkEven(value))
}
log([2, 4, 6]) // true
log([1, 2, 3]) // false
log([2, 1, 2]) // false
log([1, 3, 5]) // false
Вот наглядный пример, где второй вариант работает очевидно быстрее первого (Лично у меня результаты отличаются примерно на 10 миллисекунд, в Node.JS'же показательны отличны друг от друга ещё больше):
let data = []
const elementsAmount = 1e7 // 1e7 === 10,000,000
for (let i = 0; i < elementsAmount; i++) {
data.push(2)
}
// data = [2, 2, 2, ... 2, 2, 2] (В массиве 10,000,000 элементов)
log(checkEven_every, data)
log(checkEven_while, data)
function log(fn, data) {
console.log(`Для выполнения функции ${fn.name} потребовалось ${timeRequired(fn, data)} миллисекунд.`)
}
function timeRequired(fn, data) {
let now = Date.now()
fn(data)
return Date.now() - now
}
function checkEven_every(array) {
return array.every(e => e % 2 === 0)
}
function checkEven_while(array) {
let i = 0
while (i < array.length) {
if (array[i] % 2 !== 0) {
return false
}
i++
}
return true
}