-1

I have an object. I want to get the keys if the value is true.

What I have tried :

const data = [{superadmin: true, admin: false, user: false}]
keys = Object.keys(data).filter(k => data[k]);
console.log(typeof(data));
console.log(data)
console.log(keys)

Expected Output :

["superadmin"]
debugger
  • 1,442
  • 1
  • 9
  • 14

4 Answers4

1

For the given code

keys = Object.keys(data[0]).filter(k => data[0][k] === true);

should work.

Onki Hara
  • 270
  • 1
  • 9
1

This works

const data = [{
  superadmin: true,
  admin: false,
  user: false
}]
keys = data.map(obj => {
  const data = Object.keys(obj).filter((key) => {
    return !!obj[key]
  })

  return data
}).flat(1);

console.log(keys)
unhackit
  • 543
  • 3
  • 9
1

Instead returning value, you simply assign the keys with a value of true to a variable, like this

const data = [{superadmin: true, admin: false, user: false}]
let mkeys
data.map((obj) => {
  mkeys = Object.keys(obj).filter(k => obj[k])
})
console.log(mkeys)
Kumara
  • 480
  • 1
  • 4
  • 13
0

This is very simple:

let keys=[];
for (let [key, value] of Object.entries(data)){
    if (data[key]) keys.push(key)
}
console.log(keys)

If you want one line:

keys = Object.keys(data).filter(k => data[k]);
Stefano Leone
  • 635
  • 5
  • 14