Array.forEach()
возвращаемое значение игнорируется, и вы не можете разорвать цикл, как в for...in
.В вашем случае вы можете использовать Array.some()
для возврата результата, как только проверка не пройдет.
Примечание 1 : Array.some()
будет возвращать true
всякий раз, когдачек возвращает true
.Array.every()
вернет true
, только если все проверки вернутся true
.
Примечание 2 : Идея, лежащая в основе вашей функции, кажется возвращаемой true
, если есть хотя бы одно значение null
или ''
, но ваш код делает обратное.Вы можете отменить результат моей функции, чтобы получить false
, когда есть пустой элемент.
Примечание 3 : есть еще одна разница между Array.keys/values/entries
сArray.forEach()
и цикл for...in
.Цикл for...in
также будет зацикливать все унаследованные перечисляемые свойства, в то время как методы Object.x()
будут выполнять итерации только своих перечисляемых свойств.
// use object values, I use Object.entries to show the key in the console
const checkHasEmpty = obj => Object.entries(obj).some(([key, value]) => console.log(`key: ${key}`) || value === null || value === '')
console.log(checkHasEmpty({}))
console.log(checkHasEmpty({ a: 1, b: null, c: 3 }))
console.log(checkHasEmpty({ a: '', b: 2 }))
console.log(checkHasEmpty({ a: 1, b: 2, c: null }))