मैं अपने मुद्रा रूपांतरण के लिए उपयोग करने के लिए मुद्रा डेटा को एक नई सरणी में परिवर्तित करना चाहता हूं। लेकिन मुझे एक अलग तरह की सरणी चाहिए। मैं एक सरणी बनाना चाहता हूं जो इस तरह दिखता है:

जेसन फ़ाइल से सरणी इस तरह दिखती है:

{
   "eur":{
      "code":"EUR",
      "alphaCode":"EUR",
      "numericCode":"978",
      "name":"Euro",
      "rate":0.83563518721183,
      "date":"Mon, 7 May 2018 00:00:01 GMT"
   },
   "gbp":{
      "code":"GBP",
      "alphaCode":"GBP",
      "numericCode":"826",
      "name":"U.K. Pound Sterling",
      "rate":0.73757713865121,
      "date":"Mon, 7 May 2018 00:00:01 GMT"
   },
etc...
 }

मैं इसे इस तरह दिखाना चाहता हूं:

   {
    rates: {
        AED: 3.672538,
        AFN: 66.809999,
        ALL: 125.716501,
        AMD: 484.902502,
        ANG: 1.788575,
        AOA: 135.295998,
        ARS: 9.750101,
        AUD: 1.390866,
        /* ... */
    }
}

मैंने जो कोड इस्तेमाल किया है:

$.getJSON(
      'http://www.floatrates.com/daily/usd.json',
      function (data) {
        var newRates = [];
        Object.getOwnPropertyNames(data).forEach(
          function (val, idx, array) {
            var newObj = Object.assign(
              { val },
              { '': data[val].rate });
            newRates.push(newObj);
          }
        );
        console.log(newRates);
    )
2
pazta 7 मई 2018, 12:14

3 जवाब

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

आप एकल वस्तु को मैप करके एक वस्तु का निर्माण कर सकते हैं और उसे एक एकल वस्तु को सौंप सकते हैं।

$.getJSON(
    'http://www.floatrates.com/daily/usd.json',
    function(data) {
        var result = Object.assign(
                ...Object
                    .entries(data)
                    .map(([key, { rate }]) => ({ [key.toUpperCase()]: rate }))
            );

        console.log(result);
    }
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
1
Nina Scholz 7 मई 2018, 12:58

मैं एक सरणी बनाना चाहता हूं जो इस तरह दिखता है

जैसा कि क्वेंटिन ने कहा, यह एक सरणी नहीं है, यह एक गैर-सरणी वस्तु है। (सरणी भी वस्तुएं हैं, इसलिए "गैर-सरणी" बिट।)

आप अपने कोड में जो परिणाम प्राप्त कर रहे हैं, उससे यह स्पष्ट है कि data उस प्रारूप में पहले से है, जैसा आपने कहा था कि आप rates के लिए चाहते थे; बस इसे सीधे इस्तेमाल करें:

var obj = {rates: data};

यहाँ सबूत है:

console.log("Be sure to scroll down");

var data = {
  AED: 3.672538,
  AFN: 66.809999,
  ALL: 125.716501,
  AMD: 484.902502,
  ANG: 1.788575,
  AOA: 135.295998,
  ARS: 9.750101,
  AUD: 1.390866,
  /* ... */
};

// Applying your code to it:
var newRates = [];
Object.getOwnPropertyNames(data).forEach(
  function (val, idx, array) {
    var newObj = Object.assign(
      { val },
      { '': data[val].rate });
    newRates.push(newObj);
  }
);
console.log(newRates);

// But instead, just use it directly
var newRates2 = {rates: data};
console.log(newRates2);
.as-console-wrapper {
  max-height: 100% !important;
}
0
T.J. Crowder 7 मई 2018, 12:23

मैं जो देख रहा हूं, उससे आप जो चाहते हैं उसे सीधे सीधे असाइन करके प्राप्त कर सकते हैं, इसे आजमाएं:

$.getJSON(
    'http://www.floatrates.com/daily/usd.json',
    function (data) {
        var newRates = {'rates': []}; // <--
        Object.getOwnPropertyNames(data).forEach(
            function (val, idx, array) {
                newRates['rates'][val] = data[val].rate;
            }
        );
        console.log(newRates);
    }
)
1
Joseph Pernerstorfer 7 मई 2018, 12:28