#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