मेरे पास यह सूची है

   {
   '0': { id: 'id3', name: 'Capitan America', job: 'superHero' },
   '1': { id: 'id4', name: 'Spider-man', job: 'Pro footballer' }
  }

और मैं अपनी चाबियों को आईडी मान में इस तरह बदलना चाहता हूं:

 {
   id3 : { id: 'id3', name: 'Capitan America', job: 'superHero' },
   id4 : { id: 'id4', name: 'Spider-man', job: 'Pro footballer' }
  }

मैंने अपने कोड में यही कोशिश की है, जहां मेरे लाने वाले आइटम में मैं वस्तुओं की एक वस्तु को वस्तुओं की एक वस्तु में बदल देता हूं और जब मैं वस्तु की एक वस्तु में बदल जाता हूं तो मेरी चाबियाँ सरणी की अनुक्रमणिका की तरह रहती हैं:

    fetchItems() {
                       
         const objectified = Object.assign({},this.list)
         return objectified;     
        }
1
Edivaldo Gonçalves 17 सितंबर 2020, 22:04

4 जवाब

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

जब आप किसी ऑब्जेक्ट को ऐरे असाइन करने के लिए Object.assign का उपयोग करते हैं, तो ऐरे के इंडेक्स असाइन किए गए ऑब्जेक्ट के गुण बन जाएंगे। अपनी इच्छित वस्तु का निर्माण करने का सबसे अच्छा तरीका इसे मैन्युअल रूप से बनाना है।

अपने fetchItems को निम्नानुसार संशोधित करें:

function fetchItems() {
    const result = {};
    for (const item of list)
        result[item.id] = item;
    return result;
}
0
Mohammad Dehghan 17 सितंबर 2020, 22:42

प्रत्येक संपत्ति पर कदम रखकर, एक नई वस्तु का निर्माण करके आप जो पूछ रहे हैं उसे करने का एक तरीका यहां दिया गया है।

var objA = {
    '0': { id: 'id3', name: 'Capitan America', job: 'superHero' },
    '1': { id: 'id4', name: 'Spider-man', job: 'Pro footballer' }
};

function transform(obj) {
    var newObj = {};
    for(p in obj) { newObj[obj[p].id] = obj[p]; }
    return newObj;
}

var objB = transform(objA);
console.log(objB);
0
Glenn Ferrie 17 सितंबर 2020, 22:14

आप Object.entries का उपयोग कर सकते हैं और .reduce के साथ कुंजी-मूल्य जोड़े के माध्यम से पुनरावृति कर सकते हैं

const data = {
  0: { id: "id3", name: "Capitan America", job: "superHero" },
  1: { id: "id4", name: "Spider-man", job: "Pro footballer" },
}

const res = Object.entries(data).reduce(
  (acc, el) => ({ ...acc, [el[1].id]: el[1] }),
  {}
)

console.log(res)
0
hgb123 17 सितंबर 2020, 22:16

सरणी को [id, object] के जोड़े में मैप करें, और फिर Object.fromEntries() का उपयोग करके किसी ऑब्जेक्ट में कनवर्ट करें:

const arr = [
  { id: 'id3', name: 'Capitan America', job: 'superHero' },
  { id: 'id4', name: 'Spider-man', job: 'Pro footballer' }
]

const result = Object.fromEntries(arr.map(o => [o.id, o]))

console.log(result)
0
Ori Drori 18 सितंबर 2020, 15:37