#javascript
#javascript
Вопрос:
Я хочу проверить, являются ли объекты внутри массива пустыми или нет. Вот как я получаю свои данные, а длина объекта является динамической, поэтому я не могу использовать какое-либо жестко запрограммированное условие.
[{},{},{},{},{},{},{},{},{},{}] // length is dynamic
У меня есть способы:
Object.keys(myarray[0]).length === 0; //but this applies only for object.
есть ли случайно элегантный способ проверить это в одном условии?
Комментарии:
1. Вы хотите проверить, является ли хотя бы 1 объект в массиве пустым или в массиве пусто более одного объекта
Ответ №1:
Чтобы определить, есть ли какие-либо пустые объекты в вашем массиве, используйте Array.prototype.some()
в сочетании с Object.keys()
и Array.prototype.length
const anyEmptyObjects = myarray.some(o => Object.keys(o).length === 0)
Чтобы извлечь пустые объекты, используйте тот же предикат с Array.prototype.filter()
const emptyObjects = myarray.filter(o => Object.keys(o).length === 0)
Ответ №2:
Как насчет Object.entries? Хотя я полагаю, что это не сильно отличается
let a = [{},{test:1},{},{},{test:2},{},{},{test:3},{},{}];
let result = a.map((ele) => (Object.entries(ele) == 0));
вывод
[true, false, true, true, false, true, true, false, true, true]
Ответ №3:
Чтобы завершить решение @ jmp, вы можете получить окончательный ответ hasEmapty
следующим образом:
const hasEmpty = arr => arr.reduce((acc, obj)=> acc || !Object.entries(obj).length, false)
//---
let a = [{},{test:1},{},{},{test:2},{},{},{test:3},{},{}];
let b = [{test: 3}, {test: 4}, {test: 5}]
let c = [{},{}]
let d = []
console.log(hasEmpty(a))
console.log(hasEmpty(b))
console.log(hasEmpty(c))
console.log(hasEmpty(d))