Отфильтровать массив объектов, если значение хотя бы одного ключа равно 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))
Спасибо за внимание :)