मैं डेटा मान के साथ नक्शा रखने के लिए countries-map प्लगइन का उपयोग करता हूं। यह प्लगइन यह डेटा उदाहरण प्रदान करता है

mapData: CountriesData = {
  'ES': { 'value': 416 },
  'GB': { 'value': 94},
  'FR': { 'value': 255 }
};

इन इंटरफेस के आधार पर

interface CountriesData {
  [countryCode: string]: CountryData;
}
interface CountryData {
  value: number;
  extra?: CountryExtraData;
}
interface CountryExtraData {
  [key: string]: number |string;
}

मेरा एपीआई एक नक्शा लौटाता है

{
  "countryInstallHistory": {
    "DZ": 1,
    "SN": 3
  }
}

मेरी कोणीय परियोजना में, मैं अपने देश की सूची पर लूप करने में सक्षम हूँ।

for (let [key, result] of Object.entries(this.apkHistorDto.countryInstallHistory)) {
  console.log(key)
  console.log(result)
}

मैं अपने एपीआई द्वारा भेजे गए डेटा के साथ इंटरफ़ेस के आधार पर इस तरह की सूची कैसे बना सकता हूं?

mapData: CountriesData = {
  'DZ': { 'value': 1},
  'SN': { 'value': 3}
};

अग्रिम में धन्यवाद

1
Teddy Kossoko 11 पद 2020, 09:13

2 जवाब

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

मैं इसे प्राप्त करने के लिए बस reduce सरणी के फ़ंक्शन का उपयोग करूंगा। नीचे देखें डेमो

let response = {
  countryInstallHistory: {
    DZ: 1,
    SN: 3,
  },
};
   
 const mapData = Object.entries(response.countryInstallHistory).reduce(
    (prev, [key, value]) => ({...prev, [key]: { value }}), {}
  )

console.log(mapData );
1
Owen Kelvin 11 पद 2020, 10:28

ऊपर की तरह डेटा कन्वर्ट फ़ंक्शन जोड़ें?

function convertData(data) {
  let _result = {};
  let result = data.countryInstallHistory;
  for (let key in result) {
    _result[key] = { value: result[key] };
  }
  return _result;
}

let result = {
  countryInstallHistory: {
    DZ: 1,
    SN: 3,
  },
};
console.log(convertData(result));
0
fallwind 11 पद 2020, 09:30