Я вызываю api для обмена валют, который возвращает json, неупорядоченный с двумя массивами, и мне нужно получить дату в переменной и соответствующее значение в другой переменной, чтобы иметь возможность отображать последующие данные на графике с chart.js.

JSON, который я получаю, выглядит следующим образом:

{"rates": { "2018-05-04": {"USD": 1.1969}, "2018-08-27": {"USD": 1.1633}, "2018-06-08": {"USD": 1.1754}, "2018-08-22": {"USD": 1.1616}, "2018-07-19": {"USD": 1.1588} } } 

Я звоню по ajax со следующим кодом:

 $.ajax({ url: '(WEBSITE)', // Skipped to avoid spamming type: 'GET', dataType: 'json', data: {}, success: function (data) { var ctx = document.getElementById('myChart').getContext('2d'); // I take the JSON to see the dates var var2 = data.rates; var fecha = Object.keys(var2); var fecha = fecha; console.log( fecha ); // Output ["2018-05-04", "2018-08-27", "2018-06-08", "2018-08-22", "2018-07-19"] // CHART var chart = new Chart(ctx, { // The type of chart we want to create type: 'line', // The data for our dataset data: { labels: fecha, datasets: [{ label: 'Prueba chart', backgroundColor: 'rgb(125, 255, 238)', borderColor: 'rgb(59, 255, 229)', data: valores }] }, // Configuration options go here options: {} }); }, error: function (error) { console.log(error); } }); 

Однако, если я попытаюсь взять значения каждой монеты, используя цикл for, он покажет мне следующий результат:

 for (fecha in var2) { console.log( [var2[fecha].USD] ); var valores = [var2[fecha].USD]; } // Output a record for each row, not an array: [1.1969] [1.1633] [1.1754] [1.1616] [1.1588] 

Как можно отсортировать даты по их соответствующим значениям и связать даты с меткой «метки», а значения валют с меткой «данные» файла chart.js?

Что я хочу получить это:

 var fechas = ["2018-05-04", "2018-06-08", "2018-07-19","2018-08-22","2018-08-27"]; // Ordered Dates var valores = ["1.1969", "1.1754", "1.1588","1.1616","1.1633"]; // Value of the currencies corresponding to the ordered date 

Предполагая, что даты всегда имеют формат YYYY-MM-DD, как показано в вашем примере, вы можете отсортировать их по алфавиту следующим образом:

 const rates = { "2018-05-04": {"USD": 1.1969}, "2018-08-27": {"USD": 1.1633}, "2018-06-08": {"USD": 1.1754}, "2018-08-22": {"USD": 1.1616}, "2018-07-19": {"USD": 1.1588} }; console.log(JSON.stringify(rates)); const sorted = {}; Object.keys(rates).sort().forEach(key ={amp}gt; { sorted[key] = rates[key]; }); console.log(JSON.stringify(sorted)); //EDIT: //In case you only want the values without the dates in an array: const sortedValues = []; let i = 0; Object.keys(rates).sort().forEach(key ={amp}gt; { sortedValues.push(rates[key].USD); }); console.log(sortedValues);