проверка правильности вложенных форм - PullRequest
0 голосов
/ 19 сентября 2019
import get from "lodash.get";

const x = [
  {
    value: 1
  },
  {
    value: {
      min: undefined,
      max: 2
    }
  }
];

console.log(
  "valid: ",
  x.every(o => o.value || (get(o, "value.min") && get(o, "value.max")))
);

https://codesandbox.io/s/modest-dijkstra-g42yy

Я ожидаю, что значение true равно false, но оно вернуло true, хотя value.min не определено.В чем здесь проблема?

1 Ответ

0 голосов
/ 19 сентября 2019

Проблема в том, что ваше первое условие (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)
)));
...