Javascript 循环通过chart.js输入的数组
如何循环查看chart.js图表的Javascript 循环通过chart.js输入的数组,javascript,chart.js,Javascript,Chart.js,如何循环查看chart.js图表的chartObjectjavascript数组数据?当我引用单个元素时,即chartObject[0][0]时,我就有了这个功能,但我无法使用循环来实现这个功能 <script> const requestURL = url; const request = new XMLHttpRequest(); request.open("GET", requestURL); request.send(); request.onread
chartObject
javascript数组数据?当我引用单个元素时,即chartObject[0][0]
时,我就有了这个功能,但我无法使用循环来实现这个功能
<script>
const requestURL =
url;
const request = new XMLHttpRequest();
request.open("GET", requestURL);
request.send();
request.onreadystatechange = function() {
if (request.readyState === 4) {
doWithResponse(request.response);
}
};
function doWithResponse(chart) {
var chartObject = JSON.parse(chart)
var ctx = document.getElementById("myChart");
var myChart = new Chart(ctx, {
type: "horizontalBar",
data: {
labels: [
chartObject[0][0],
chartObject[0][1],
chartObject[0][2],
chartObject[0][3],
chartObject[0][4],
chartObject[0][5],
chartObject[0][6],
chartObject[0][7],
chartObject[0][8],
chartObject[0][9]
],
datasets: [
{
label: "Frequency",
data: [
chartObject[1][0],
chartObject[1][1],
chartObject[1][2],
chartObject[1][3],
chartObject[1][4],
chartObject[1][5],
chartObject[1][6],
chartObject[1][7],
chartObject[1][8],
chartObject[1][9]
],
backgroundColor: [
"rgba(255, 99, 132, 0.2)",
"rgba(54, 162, 235, 0.2)",
"rgba(255, 99, 132, 0.2)",
"rgba(54, 162, 235, 0.2)",
"rgba(255, 99, 132, 0.2)",
"rgba(54, 162, 235, 0.2)",
"rgba(255, 99, 132, 0.2)",
"rgba(54, 162, 235, 0.2)",
"rgba(255, 99, 132, 0.2)",
"rgba(54, 162, 235, 0.2)"
],
borderColor: [
"rgba(255, 99, 132, 1)",
"rgba(54, 162, 235, 1)",
"rgba(255, 99, 132, 1)",
"rgba(54, 162, 235, 1)",
"rgba(255, 99, 132, 1)",
"rgba(54, 162, 235, 1)",
"rgba(255, 99, 132, 1)",
"rgba(54, 162, 235, 1)",
"rgba(255, 99, 132, 1)",
"rgba(54, 162, 235, 1)"
],
borderWidth: 2
}
]
},
options: {
scales: {
yAxes: [
{
ticks: {
beginAtZero: true
}
}
]
},
title: {
display: true,
text: 'Test Count'
}
});
}
</script>
常量请求URL=
网址;
const request=new XMLHttpRequest();
打开(“GET”,requestURL);
request.send();
request.onreadystatechange=函数(){
if(request.readyState==4){
doWithResponse(请求.响应);
}
};
功能响应(图表){
var chartObject=JSON.parse(图表)
var ctx=document.getElementById(“myChart”);
var myChart=新图表(ctx{
类型:“水平条”,
数据:{
标签:[
chartObject[0][0],
chartObject[0][1],
chartObject[0][2],
chartObject[0][3],
chartObject[0][4],
chartObject[0][5],
chartObject[0][6],
chartObject[0][7],
chartObject[0][8],
chartObject[0][9]
],
数据集:[
{
标签:“频率”,
数据:[
chartObject[1][0],
chartObject[1][1],
chartObject[1][2],
chartObject[1][3],
chartObject[1][4],
chartObject[1][5],
chartObject[1][6],
chartObject[1][7],
chartObject[1][8],
chartObject[1][9]
],
背景颜色:[
"rgba(255,99,132,0.2),,
“rgba(54162235,0.2)”,
"rgba(255,99,132,0.2),,
“rgba(54162235,0.2)”,
"rgba(255,99,132,0.2),,
“rgba(54162235,0.2)”,
"rgba(255,99,132,0.2),,
“rgba(54162235,0.2)”,
"rgba(255,99,132,0.2),,
rgba(54162235,0.2)
],
边框颜色:[
“rgba(255、99、132、1)”,
“rgba(54162235,1)”,
“rgba(255、99、132、1)”,
“rgba(54162235,1)”,
“rgba(255、99、132、1)”,
“rgba(54162235,1)”,
“rgba(255、99、132、1)”,
“rgba(54162235,1)”,
“rgba(255、99、132、1)”,
rgba(54162235,1)
],
边框宽度:2
}
]
},
选项:{
比例:{
雅克斯:[
{
滴答声:{
贝吉纳泽罗:是的
}
}
]
},
标题:{
显示:对,
文本:“测试计数”
}
});
}
这里不需要任何循环,您只需要从createObject
的特定索引中获取值,但由于chartObject
是对象,因此您需要在传递数据时创建一个副本,以使其具有不变性,这样您就可以使用..
或切片
或映射
来创建副本
您只需使用…扩展语法
data : {
labels : [...chartObject[0]],
datasets: [{
label: 'frequency',
data: [...chartObject[1]],
...
}]
}
如果您确定传递给图表的值不会改变原始状态,则可以直接将其作为
data : {
labels : chartObject[0],
datasets: [{
label: 'frequency',
data: chartObject[1],
...
}]
}
这里不需要任何循环,您只需要从
createObject
的特定索引中获取值,但由于chartObject
是对象,因此在传递数据时需要创建一个副本以具有不变性,因此您可以使用..
或切片
或映射
来创建副本
您只需使用…扩展语法
data : {
labels : [...chartObject[0]],
datasets: [{
label: 'frequency',
data: [...chartObject[1]],
...
}]
}
如果您确定传递给图表的值不会改变原始状态,则可以直接将其作为
data : {
labels : chartObject[0],
datasets: [{
label: 'frequency',
data: chartObject[1],
...
}]
}
您可以使用
Array.prototype.map
:
labels:chartObject[0].map((x,i)=>chartObject[0][i]),
数据集:[{
标签:“频率”,
数据:chartObject[1]。地图((x,i)=>chartObject[1][i])
}]
您可以使用Array.prototype.map
:
labels:chartObject[0].map((x,i)=>chartObject[0][i]),
数据集:[{
标签:“频率”,
数据:chartObject[1]。地图((x,i)=>chartObject[1][i])
}]
谢谢。我也想遍历子列表,但很难做到这一点。正如您在这里回答我的问题一样,我在创建了另一个问题。@ade1e您需要显示您的子列表的外观,而且我也不明白多个图表是什么意思,您想要多个图表实例吗?您好。请参阅t中的JSON文件他在新问题中编写了代码,其中包含子列表。是的,你是对的,图表有多个实例。谢谢sublist@ade1e好的,看看json后的快速响应,你能做的就是一次将两个子项组合在一起,而不是重复你在代码中所做的每一步,我们做了两个子项。我还想迭代子列表,但很难做到这一点。正如您在这里回答我的问题一样,我在创建了另一个问题。@ade1e您需要显示子列表的外观,而且我不明白多个图表是什么意思,您想要多个图表实例吗?您好。请参阅新问题代码中的JSON文件,其中h作为子列表。是的,你是对的,图表的多个实例。谢谢,这是带有sublist@ade1e好的,看了json后的快速响应,你能做的就是一次将两个子项组合在一起,而不是重复你在代码中所做的每一步,我们做了两个子项。有可能帮助你完成这个相关的任务吗ion?@ade1e好吧,我回答了…这花了我一些时间,但希望它能帮上忙:)谢谢。有可能帮上这个相关的问题吗?@ade1e好吧,我回答了…这花了我一些时间,但希望它能帮上忙:)