Проблема в том, что ваше первое условие (o.value
) возвращает true для второго элемента - поскольку value
является объектом и, следовательно, не ложным - поэтому ваша проверка на минимальное / максимальное значение никогда не выполняется.
const x = [
{
value: 1
},
{
value: {
min: undefined,
max: 2
}
}
];
// utility to check for null/undefined
const c = v => v != null;
console.log(x.every(({ value }) => (
typeof value === 'object'
? c(value.min) && c(value.max)
: c(value)
)));