Necesito obtener una matriz con valores clave específicos de un objeto.
Supongamos que existe este objeto (opcional algunas claves más diferentes)
{ username: 'bla', admin: true, editor: true, user: false, foo: 'bar' } Solo necesito procesar las claves admin , editor y user y obtener esas claves en una matriz, si su valor es true . Entonces, en el ejemplo, el resultado debería ser:
['admin', 'editor'] Si las tres claves tienen un valor false , debería devolver una matriz vacía.
Yo haría un filtro primero:
obj.filter(e => ['admin', 'editor', 'user'].indexOf(e) > -1 && !!e)y luego extraer las claves?
Como ya tiene la lista de campos, simplemente aplique una llamada .filter en eso :
const obj = { username: 'bla', admin: true, editor: true, user: false, foo: 'bar' }; const fields = ['admin', 'editor', 'user']; const result = fields.filter(field => obj[field] === true); console.log(result);Puede obtener claves de objetos usando Object.keys y aplicar filtros para sus datos requeridos. Pruebe el siguiente código, debería funcionar para usted.
const obj = { username: 'bla', admin: true, editor: true, user: false, foo: 'bar' } const objKeys = Object.keys(obj).filter(item => (obj[item] && typeof obj[item] == "boolean"));obtener solo llaves: -
console.log(objKeys)obtener una matriz de objetos con valor clave: -
console.log(objKeys.map(item => ({[item] : obj[item]})))