Вы можете сделать что-то вроде этого
let array = [{
a: "asas",
b: {
au: false,
h: false,
l: true
}
}, {
a: "avd",
b: {
au: true,
h: false,
l: true
}
}, {
a: "as",
b: {
au: true,
h: false,
l: false
}
}, {
a: "ab",
b: {
au: false,
h: false,
l: false
}
}]
let output = array.filter((element) => {
let keys = Object.keys(element.b)
element.b = keys.filter((key) => {
if (element.b[key]) {
return key
}
})
if (!Object.keys(element.b).length) {
element.b = []
}
return element;
})
console.log(output)
Это даст вам
[
{
"a": "asas",
"b": [
"l"
]
},
{
"a": "avd",
"b": [
"au",
"l"
]
},
{
"a": "as",
"b": [
"au"
]
},
{
"a": "ab",
"b": []
}
]
Я предполагаю, что вам может понадобиться пустой массив, если ни одно из значений не является истинным.