Как проверить, пуст ли массив свойств объекта в javascript - PullRequest
1 голос
/ 24 апреля 2020

Я пытаюсь выполнить проверку в js, чтобы проверить, являются ли массивы свойств объектов пустыми строками или нет, чтобы уточнить, у меня есть массив, в котором есть объекты внутри, и я хочу проверить для каждого объекта если у него есть пустое свойство (""), вот код, который я написал, но я не уверен, что это правильный путь

const items = [
  { name: "something", quantity: "25", unit: "d" },
  { name: "something", quantity: "25", unit: "d" },
  { name: "something", quantity: "25", unit: "d" },
];

const validation = items.map((item) => {
  return Boolean(item.name && item.quantity && item.unit);
});

Но он просто дает мне такой массив:

[true, true, true]

Как будто я хочу, чтобы оно давало мне значение true, только если все свойства не пустые

Спасибо

Ответы [ 2 ]

2 голосов
/ 24 апреля 2020

Можно принять Array#every

Метод every() проверяет, все ли элементы массива проходят тест, реализованный предоставленной функцией , Он возвращает логическое значение.

и получает true, если все значения не являются ложными.

const items = [
  { name: "something", quantity: "25", unit: "d" },
  { name: "something", quantity: "25", unit: "d" },
  { name: "something", quantity: "25", unit: "d" },
];

const validation = items.every(item => item.name && item.quantity && item.unit);

console.log(validation);
1 голос
/ 24 апреля 2020

См. Ниже код проверка даст true , если массив не содержит пустой объект, иначе он выдаст false .

вы не должны сравнивать каждое свойство объекта, вместо этого каждый раз сравнивайте длину объекта

const items = [
  { name: "something", quantity: "25", unit: "d" },
  { name: "something", quantity: "25", unit: "d" },
  { name: "something", quantity: "25", unit: "d" },
];
let validation=true;

for(let i=0;i<items.lenght;++i){
   if(Object.keys(items[i]).length===0) {
   validation =false;
   break;
}
}

console.log(validation);
...