如何在不使用对象关键字名称javascript的情况下从json数组对象中获取值


Json阵列对象

通过Ajax,我将获得不恒定的动态数据,或者基于查询数据的类似数据将发生变化。但我想显示图表,所以我在需要传递数组数据的地方使用了chartjs。所以我尝试了下面的代码,但每当数据发生变化时,代码就会中断。

我无法粘贴完整的JSON文件,所以解析后它看起来是这样的[{"品牌":"DUNKIN’DONUTS KEURIG","体积":1.9,"价值":571757},{"商标":"MC CAFE","容量":1.1,"值":265096}];

您可以使用Object.keys并指定位置编号来获得该值

var valueOne =[];
var valueTwo = [];
jsonData.forEach(function(e){
valueOne.push(e[Object.keys(e)[1]]);
valueTwo.push(e[Object.keys(e)[2]]);
})

您想要做的似乎是根据接收到的数据有条件地填充数组。一种解决方案可能是使用一个变量,该变量的值基于对象上是否存在valueprice属性。例如,在forEach循环中:

const valueOne = [];
jsonData.forEach((e) => {
const val = typeof e.value !== undefined ? e.value : e.average;
valueOne.push(val);
})

在您的jsonData.forEach循环中,您可以使用以下内容来测试元素的存在性:

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

和类似的价值二。。。

您可以使用第一个数组元素的键和与您要查找的数组相对应的值创建一个对象:

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

相关内容

最新更新