【发布时间】:2020-08-08 10:12:30
【问题描述】:
我有以下 JSON:
[
{
"name": "sp5",
"damage": "68",
"penetration": "35",
"class1": "6",
"class2": "6",
"class3": "6",
"class4": "5",
"class5": "3",
"class6": "2"
},
{
"name": "sp6",
"damage": "58",
"penetration": "43",
"class1": "6",
"class2": "6",
"class3": "6",
"class4": "6",
"class5": "5",
"class6": "4"
}
]
我有一个函数循环遍历数组中的对象,然后循环遍历该对象的属性/键,并尝试通过每个对象的 class6 对它自己的新对象和 chart.data 进行属性损坏和推送。数据集数组。我在每个对象数据数组中得到 16 个值,而不是所需的 8 个。
function createObjectsForChart(data) {
console.log(`Data: ${data}`);
const chart = {
type: 'bar',
data: {
labels: ["Damage", "Penetration", "Class1", "Class 2", "Class 3", "Class 4", "Class 5", "Class 6"],
datasets: [],
}
}
const dataset = {
label: "",
fillColor: "rgba(220,220,220,0.5)",
strokeColor: "rgba(220,220,220,0.8)",
highlightFill: "rgba(220,220,220,0.75)",
highlightStroke: "rgba(220,220,220,1)",
data: []
}
let myChart = Object.create(chart);
data.forEach((item, i) => {
console.log(`Item: ${item}, Index: ${i}`);
console.log(`Data length: ${data.length}`);
//data[i]
let myData = Object.create(dataset);
count = 0;
for (const property in item) {
if(count >= 1) {
//console.log(`Value: ${data[i][property]}`);
myData.data.push(item[property]);
}
console.log(`Property: ${property}, Value: ${item[property]}`);
count++;
}
myData.label = data[i].name;
myChart.data.datasets.push(myData);
});
//myChart.data.datasets[0].highlightStroke = "";
console.log(myChart.data.datasets);
}
【问题讨论】:
-
能否也分享一下预期的输出!
标签: javascript arrays loops object prototype