Как получить значения из объекта массива json без использования имени ключа объекта javascript? - PullRequest
0 голосов
/ 30 ноября 2018

Json Array Object

Через Ajax я получу динамические данные, которые не являются постоянными, или аналогичные данные, основанные на данных запроса, изменятся.Но я хочу отобразить диаграммы, поэтому я использовал chartjs, где мне нужно передать данные массива.Поэтому я попробовал приведенный ниже код, но всякий раз, когда данные изменяются, этот код ломается.

Я не могу вставить полный файл JSON, поэтому после синтаксического анализа он выглядит следующим образом [{"brand": "DUNKIN 'DONUTS KEURIG", "volume":1.9, «значение»: 571757}, {«бренд»: «MC CAFE», «объем»: 1,1, «значение»: 265096}];

Ответы [ 4 ]

0 голосов
/ 30 ноября 2018

В вашем цикле jsonData.forEach вы можете проверить существование элемента, используя что-то вроде:

if (e['volume']===undefined) {
    valueone.push(e.price);
} else {
    valueone.push(e.volume);
}

И аналогично для valuetwo ...

0 голосов
/ 30 ноября 2018

Вы можете создать объект с ключами вашего первого элемента массива и значениями, соответствующими массивам, которые вы ищете:

var data = [{"brand":"DUNKIN' DONUTS KEURIG","volume":1.9,"value":571757},{"brand":"MC CAFE","volume":1.1,"value":265096}];

var splitArrays = Object.keys(data[0]).reduce((o, e) => {
  o[e] = data.map(el => el[e]);
  return o;
}, {});
// show the whole object 
console.log(splitArrays);

// show the individual arrays
console.log("brand");
console.log(splitArrays.brand);

console.log("volume");
console.log(splitArrays.volume);
// etc
0 голосов
/ 30 ноября 2018

Вы можете использовать Object.keys и указать номер позиции, чтобы получить это значение

var valueOne =[];
var valueTwo = [];
jsonData.forEach(function(e){
   valueOne.push(e[Object.keys(e)[1]]);
   valueTwo.push(e[Object.keys(e)[2]]);
})
0 голосов
/ 30 ноября 2018

Похоже, что вы пытаетесь условно заполнить массив на основе данных, которые вы получаете.Одним из решений может быть использование переменной, значение которой зависит от того, существует ли у объекта свойство value или price.Например, в цикле forEach:

const valueOne = [];

jsonData.forEach((e) => {
  const val = typeof e.value !== undefined ? e.value : e.average;
  valueOne.push(val);
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...