Как преобразовать объект в массив в angularjs - PullRequest
1 голос
/ 02 апреля 2019

Я конвертирую объект json в массив. Данные, которые я получаю, как показано ниже. Я попробовал Google, но не нашел ответ. Как решить эту проблему из данных ниже

[{"january":"0.00","february":"0.00","mac":"1271.00","april":"5.00","may":"0.00","june":"0.00","july":"0.00","august":"0.00","september":"0.00","october":"0.00","november":"0.00","december":"0.00"}]

в это

$scope.data = [
        [0.00, 0.00, 1271.00, 5.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00]
      ];

в файле file.html

<div class="card">
    <div class="card-header">
         <i class="icon-graph icon-bg"></i>Bar Chart
    </div>
    <canvas id="bar" class="chart chart-bar" chart-data="graph" chart-labels="labels"></canvas>

</div>

в файле .js

$http.get(commonData.apiURL + 'dashboard/countDataGraph.php')
        .success(function (data) {
            $scope.graph = data;
            console.log(JSON.stringify(data));

        })
        .error(function (data, status, headers, config) {
            $scope.errorMessage = "Couldn't load the list of Orders, error # " + status;
            console.log("error");
    });

Ответы [ 3 ]

2 голосов
/ 02 апреля 2019

Свойства объекта в JavaScript неупорядочены , поэтому решения, использующие Object.values(), не могут гарантировать правильность упорядочения результирующего массива.

Вы должны вывести отдельные значения в правильном порядке и создать из них новый массив. Предварительное определение массива месяцев в сочетании с операцией map() поможет:

const months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];
const data = [{"january":"0.00","february":"0.00","march":"1271.00","april":"5.00","may":"0.00","june":"0.00","july":"0.00","august":"0.00","september":"0.00","october":"0.00","november":"0.00","december":"0.00"}];

const result = data.map(v => months.map(m => v[m]));
       
console.log(result);
0 голосов
/ 02 апреля 2019

Вы можете использовать map() и Object.values

const arr = [{"january":"0.00","february":"0.00","mac":"1271.00","april":"5.00","may":"0.00","june":"0.00","july":"0.00","august":"0.00","september":"0.00","october":"0.00","november":"0.00","december":"0.00"}]

const res = arr.map(x => Object.values(x));

console.log(res);
0 голосов
/ 02 апреля 2019

Вы можете использовать функцию Object.values

Object.values(o) // Returns an array of values.

let obj = [{"january":"0.00","february":"0.00","mac":"1271.00","april":"5.00","may":"0.00","june":"0.00","july":"0.00","august":"0.00","september":"0.00","october":"0.00","november":"0.00","december":"0.00"}];
let values = obj.map(Object.values);
console.log(values);
.as-console-wrapper { max-height: 100% !important; top: 0; }
...