Отфильтровать массив объектов, если значение хотя бы одного ключа равно false

Есть массив вида

[
   {
      "isSquare":true,
      "hasBorder":true,
      "isRed":true,
      "isBig":true
   },
   {
      "isSquare":true,
      "hasBorder":false,
      "isRed":true,
      "isBig":true
   },
   {
      "isSquare":false,
      "hasBorder":true,
      "isRed":true,
      "isBig":true
   },
   {
      "isSquare":true,
      "hasBorder":true,
      "isRed":false,
      "isBig":true
   },
   {
      "isSquare":true,
      "hasBorder":true,
      "isRed":true,
      "isBig":false
   }
]

Я хочу его отфильтровать так, что если хотя бы один из ключей равен false, то объект не будет выводиться. То есть фактически получить только нулевой объект, если смотреть по данному примеру. Есть ли вариант фильтровать, не приводя названия ключей, просто перебирая все?


Ответы (2 шт):

Автор решения: Oliver Patterson

Мой способ реализации, уверен можно лучше, просто решил себя попробовать.

let test =
[
   {
      "isSquare":true,
      "hasBorder":true,
      "isRed":true,
      "isBig":true
   },
   {
      "isSquare":true,
      "hasBorder":false,
      "isRed":true,
      "isBig":true
   },
   {
      "isSquare":false,
      "hasBorder":true,
      "isRed":true,
      "isBig":true
   },
   {
      "isSquare":true,
      "hasBorder":true,
      "isRed":false,
      "isBig":true
   },
   {
      "isSquare":true,
      "hasBorder":true,
      "isRed":true,
      "isBig":false
   }
];

let newObj = test.filter((obj) =>
{
  return !Object.values(obj).some((value) => !value)
});
console.log(newObj)

→ Ссылка
Автор решения: awaken91

Пришел к такому решению:

 jsonValue.filter(e => !Object.values(e).includes(false))

Спасибо за внимание :)

→ Ссылка