मैं केवल एक निश्चित प्रकार के गुण प्राप्त करने के लिए किसी ऑब्जेक्ट को फ़िल्टर करने का एक तरीका निकालने का प्रयास कर रहा हूं।

मेरी वस्तु इस तरह दिखती है:

analysis: {
  cultural1: true,
  cultural2: false,
  cultural3: true,
  cultural4: true,
  culturalScore: 75,
  environment1: true,
  environment2: true,
  environment3: true,
  environment4: true,
  environmentScore: 100,
  createdAt: "2021-09-15 11:43:58 -0400",
  id: 543,
  review: 'Lorem ipsum odor'
}

मैं जो चाहता हूं वह उस वस्तु के केवल बूलियन विशेषताओं की एक सरणी प्राप्त करना है। शुक्रिया!

1
Antoine Lessard 22 नवम्बर 2021, 17:23

2 जवाब

सबसे बढ़िया उत्तर
  • Object#keys का इस्तेमाल करना , विशेषताओं की सूची प्राप्त करें
  • Array#filter का इस्तेमाल करना , उपरोक्त सूची पर पुनरावृति करें और typeof
const analysis = {
  cultural1: true,
  cultural2: false,
  cultural3: true,
  cultural4: true,
  culturalScore: 75,
  environment1: true,
  environment2: true,
  environment3: true,
  environment4: true,
  environmentScore: 100,
  createdAt: "2021-09-15 11:43:58 -0400",
  id: 543,
  review: 'Lorem ipsum odor'
};

const keysWithBooleanValues = 
  Object.keys(analysis)
  .filter(k => typeof analysis[k] == "boolean");

console.log(keysWithBooleanValues);
2
Majed Badawi 22 नवम्बर 2021, 17:47

key,values जोड़ी की एक सरणी प्राप्त करने के लिए Object.entries का उपयोग करें और फिर typeof का उपयोग करके उन मानों को उनके प्रकारों के आधार पर फ़िल्टर करें।

let analysis =  {
  cultural1: true,
  cultural2: false,
  cultural3: true,
  cultural4: true,
  culturalScore: 75,
  environment1: true,
  environment2: true,
  environment3: true,
  environment4: true,
  environmentScore: 100,
  createdAt: "2021-09-15 11:43:58 -0400",
  id: 543,
  review: 'Lorem ipsum odor'
}

let result_obj = Object.fromEntries(Object.entries(analysis)
.filter(([k,v]) => typeof(v) === 'boolean'))

console.log(result_obj)
2
Alan Omar 22 नवम्बर 2021, 17:53