0

I am trying to filter an array of objects and i am using filter method to filter the array of objects but i am unable to filter

[
   {
      "uid":"ITIzoS7gi1XODY1iQKhltCNFCib2",
      "emailVerified":false,

      "disabled":false,
      "metadata":{
         "lastSignInTime":"Fri, 01 May 2020 07:03:52 GMT",
         "creationTime":"Fri, 01 May 2020 07:01:50 GMT"
      },
      "customClaims":{
         "admin":[
            "Sk nagar"
         ]
      },
      "tokensValidAfterTime":"Fri, 01 May 2020 07:06:12 GMT",

   },
   {
      "uid":"JOdx4er51ibvaN4IChSJyhdLkot1",
      "emailVerified":false,

      "disabled":false,
      "metadata":{
         "lastSignInTime":"Thu, 30 Apr 2020 05:40:21 GMT",
         "creationTime":"Thu, 30 Apr 2020 05:40:21 GMT"
      },
      "customClaims":{},

   },
   {
      "uid":"PR837CY9aibZMcQ1Ux9ELOBNhus1",
      "emailVerified":false,
      "disabled":false,
      "metadata":{
         "lastSignInTime":"Fri, 01 May 2020 10:55:51 GMT",
         "creationTime":"Fri, 01 May 2020 10:26:12 GMT"
      },
      "customClaims":{
         "admin":[
            "xyz"
         ]
      },


   },
   {
      "uid":"T9FucO2XqHXKh8SvfQMd8uPuQ8i1",
      "emailVerified":false,
      "disabled":false,
      "metadata":{
         "lastSignInTime":"Thu, 30 Apr 2020 05:47:30 GMT",
         "creationTime":"Thu, 30 Apr 2020 05:47:30 GMT"
      },
      "customClaims":{},
      "providerData":[
         {
            "uid":"+917827831148",
            "providerId":"phone",
            "phoneNumber":"+917827831148"
         }
      ]
   }
]

I am trying to get the objects which contains the customeClaims ==={}

here is my tried solution but when i am using this i am getting an empty array[]

const result = data.filter(doc =>{
    return (doc.customClaims==={})
})
console.log(result)
xanderUtin
  • 25
  • 5

2 Answers2

0

to filter out empty objects;

data.filter(doc =>{
    return Object.keys(doc.customClaims).length === 0 && doc.customClaims.constructor === Object
})
emrhzc
  • 1,347
  • 11
  • 19
0

Try this: just check for the key length in that object. (assuming that will always be an object)

var t = [
   {
      "uid":"ITIzoS7gi1XODY1iQKhltCNFCib2",
      "emailVerified":false,

      "disabled":false,
      "metadata":{
         "lastSignInTime":"Fri, 01 May 2020 07:03:52 GMT",
         "creationTime":"Fri, 01 May 2020 07:01:50 GMT"
      },
      "customClaims":{
         "admin":[
            "Sk nagar"
         ]
      },
      "tokensValidAfterTime":"Fri, 01 May 2020 07:06:12 GMT",

   },
   {
      "uid":"JOdx4er51ibvaN4IChSJyhdLkot1",
      "emailVerified":false,

      "disabled":false,
      "metadata":{
         "lastSignInTime":"Thu, 30 Apr 2020 05:40:21 GMT",
         "creationTime":"Thu, 30 Apr 2020 05:40:21 GMT"
      },
      "customClaims":{},

   },
   {
      "uid":"PR837CY9aibZMcQ1Ux9ELOBNhus1",
      "emailVerified":false,
      "disabled":false,
      "metadata":{
         "lastSignInTime":"Fri, 01 May 2020 10:55:51 GMT",
         "creationTime":"Fri, 01 May 2020 10:26:12 GMT"
      },
      "customClaims":{
         "admin":[
            "xyz"
         ]
      },


   },
   {
      "uid":"T9FucO2XqHXKh8SvfQMd8uPuQ8i1",
      "emailVerified":false,
      "disabled":false,
      "metadata":{
         "lastSignInTime":"Thu, 30 Apr 2020 05:47:30 GMT",
         "creationTime":"Thu, 30 Apr 2020 05:47:30 GMT"
      },
      "customClaims":{},
      "providerData":[
         {
            "uid":"+917827831148",
            "providerId":"phone",
            "phoneNumber":"+917827831148"
         }
      ]
   }
];

var aArray = t.filter((tt) => {return Object.keys(tt.customClaims).length === 0});
console.log(aArray);
LearningEveryday
  • 584
  • 1
  • 3
  • 13