तो मेरे पास वस्तुओं की एक सरणी है जो इस तरह दिखती है:

 [
  {
    Other: 23,
  },
  {
    Choco: 21,
  },
  {
    Vanila: 10,
  },
  {
    "Other - WA": 2,
  },
  {
    Strawbery: 30,
  },
];

क्या करने की आवश्यकता है मुझे इसे दिखाकर क्रमबद्ध करना है:

  1. वह सब जिसके पास 'अन्य' कुंजी है।
  2. शेष अधिकतम से कम से कम मूल्य के आधार पर शुरू होता है।

मुझे लगा कि मैं उन सभी को स्थानांतरित करके 2 अलग-अलग सरणी बना सकता हूं जिनमें 'अन्य' कुंजी है और बाकी को एक अलग में रखा गया है। फिर मैं बस मूल्य के आधार पर छाँटता हूँ और फिर स्प्रेड ऑपरेटर का उपयोग करके 2 सरणियों में शामिल होता हूँ। समस्या यह है कि मैं इसे कुंजी में 'अन्य' का पता लगाने के लिए नहीं प्राप्त कर सकता हूं और जब यह ऐसा करता है तो यह सचमुच पसंद नहीं करता है कि SQL से 'LIKE' कैसे करेगा यहां अभी के लिए कोड है:

let other = pgData.contents[6]?.locCounts?.filter((loc) =>
  Object.keys(loc).includes("Other")
);

यह केवल "अन्य" के साथ कुंजी देता है "अन्य - डब्ल्यूए" नहीं, जैसे कि इसके सामने जो कुछ भी है, उसके बावजूद मैं इसमें "अन्य" शब्द प्राप्त करना चाहता हूं।

0
Hadi Pawar 22 मार्च 2021, 18:21

3 जवाब

सबसे बढ़िया उत्तर

includes() एक पुनरावर्तक पर तत्वों के खिलाफ एक सटीक मिलान करता है, न कि एक सबस्ट्रिंग मैच। find() का उपयोग कॉलबैक फ़ंक्शन के साथ करें जो एक सबस्ट्रिंग मैच करता है। आप वहां एक सबस्ट्रिंग की जांच के लिए कुंजी पर includes का उपयोग कर सकते हैं।

Object.keys(loc).find(key => key.includes("Other"))

यदि आप दो सरणियाँ बनाना चाहते हैं, तो आप दो कॉल filter() का उपयोग करने के बजाय इसे एक लूप में कर सकते हैं:

let other = [];
let not_other = [];
pgData.contents[6]?.locCounts?.forEach(loc => {
  if (Object.keys(loc).find(key => key.includes("Other"))) {
    other.push(loc);
  } else {
    not_other.push(loc);
}
2
Barmar 22 मार्च 2021, 15:35

मैंने बस आपके कोड को थोड़ा सा संशोधित किया है। यहाँ एक-लाइनर है:

var arr = [{
    Other: 23,
  },
  {
    Choco: 21,
  },
  {
    Vanila: 10,
  },
  {
    "Other - WA": 2,
  },
  {
    Strawbery: 30,
  },
]

var newArr = arr.filter(el => Object.keys(el)[0].includes("Other"))

console.log(newArr)
1
Endothermic_Dragon 22 मार्च 2021, 15:33

आप वस्तुओं को पुन: सक्रिय कर सकते हैं और इस तरह के मूल्यों पर उपयोग शामिल कर सकते हैं:

let arrayOfObj = [
  {
    Other: 23,
  },
  {
    Choco: 21,
  },
  {
    Vanila: 10,
  },
  {
    "Other - WA": 2,
  },
  {
    Strawbery: 30,
  },
];

let results = []

arrayOfObj.forEach( (e)=> {
  keys = Object.keys(e)
  others = keys.forEach(
  (e)=> {
    if (e.includes('Other')) {
      results.push(e)
    }
  })
})

console.log(results)
1
Mario Perez 22 मार्च 2021, 15:40