_. каждая функция неправильно вычисляется в компоненте Vue

#javascript #vue.js #lodash

#javascript #vue.js #Lodash

Вопрос:

Я перебираю массив объектов, и я хотел бы проверить, были ли какие-либо входные данные во всех полях для всех объектов. Когда я запускаю свой код в консоли с аналогичными данными, он вычисляется правильно, но по какой-то причине внутри моего компонента vue (в наблюдателе) это не так, почему?

 watch: {
    queryCopy: {
      handler(val){

        const something = every(this.queryCopy.rowData, (row) => every(row, (field) => field !==null));
        return something

      },
      deep: true
    }
  }
  

Вот пример данных, с которыми я имею дело:

 {"id":"query_4","rowData":[{"condition":null,"field":null,"operator":null,"name":null}]}
  

Это оценивается как true! в то время как все значения null .
ожидаемый результат для возврата false фактического результата true

Я предоставляю изолированную среду, где она действительно работает, но все равно не будет работать в моем проекте, который является тем же кодом! https://codesandbox.io/s/2p54xypxwp

Комментарии:

1. Вы можете сделать небольшой пример в jsFiddle

2. Я не очень много работаю с JS, но не могли бы вы создать метод, который возвращает первый ненулевой элемент, чтобы вы могли, возможно, увидеть, какое значение отбрасывает это?

3. У меня не было времени на правильную отладку, но я заметил, что добавление immediate: true к наблюдателю возвращает true, затем false , подразумевая, что что-то меняется, чтобы изменить оценку.

4. На самом деле, это может быть отвлекающий маневр, в документах Lodash указано: этот метод возвращает true для пустых коллекций, потому что все верно для элементов пустых коллекций.

5. дело в том, что эта коллекция не пуста, имеет свойства, которые null