मेरे पास यह सूची है
{
'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;
}
4 जवाब
जब आप किसी ऑब्जेक्ट को ऐरे असाइन करने के लिए Object.assign
का उपयोग करते हैं, तो ऐरे के इंडेक्स असाइन किए गए ऑब्जेक्ट के गुण बन जाएंगे। अपनी इच्छित वस्तु का निर्माण करने का सबसे अच्छा तरीका इसे मैन्युअल रूप से बनाना है।
अपने fetchItems
को निम्नानुसार संशोधित करें:
function fetchItems() {
const result = {};
for (const item of list)
result[item.id] = item;
return result;
}
प्रत्येक संपत्ति पर कदम रखकर, एक नई वस्तु का निर्माण करके आप जो पूछ रहे हैं उसे करने का एक तरीका यहां दिया गया है।
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);
आप 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)
सरणी को [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)