Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环通过chart.js输入的数组_Javascript_Chart.js - Fatal编程技术网

Javascript 循环通过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

如何循环查看chart.js图表的
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好吧,我回答了…这花了我一些时间,但希望它能帮上忙:)