如何使用JavaScript生成点数组?

如何使用JavaScript生成点数组?,javascript,arrays,Javascript,Arrays,我使用JavaScript和Chartjs库来绘制图表。我将点数据存储在JSON中: “图表1”:{“1”:“4”、“4”:“4”、“10”:“4”} 要正确绘制图表,我需要提供如下输入: 数据:[{x:1,y:4},{x:4,y:4},{x:10,y:4}] 我试着这样做: var userData = JSON.parse('{"Chart1":{"1": "4","4": "4","10": "4"}}'); var MyKey = [Object.keys(userData['Chart

我使用JavaScript和Chartjs库来绘制图表。我将点数据存储在JSON中:

“图表1”:{“1”:“4”、“4”:“4”、“10”:“4”}

要正确绘制图表,我需要提供如下输入:

数据:[{x:1,y:4},{x:4,y:4},{x:10,y:4}]

我试着这样做:

var userData = JSON.parse('{"Chart1":{"1": "4","4": "4","10": "4"}}');
var MyKey = [Object.keys(userData['Chart1'])];
var MyVal = [Object.values(userData['Chart1'])];
var POINTS = []; //I tried also {}
for(b=0; b <= MyKey.length; b++)
{
   POINTS.push({x:MyKey[b],y:MyVal[b]}); 
}
但结果是:

[
   0:
   {
      x:["1","4","10"]
      y:["4","4","4"]
   }
   1:
   {
      x:undefined
      y:undefined
   }
}
f 那么我应该如何正确地做到这一点呢

编辑: 我更正了json字符串,粘贴错误,这只是一个输入错误,但感谢大家的支持

  • 在您的示例中,json字符串中缺少一些字符

  • Object.key
    Object.value
    返回数组,不要将它们括在
    []

  • 您正在存储字符串,但您的点可能需要
    x
    y
    的数字。您可以使用
    +
    运算符(或
    parseInt
    Number
    )进行转换

  • var userData=JSON.parse(“{”Chart1:{”1:“4”,“4:“4”,“10:“4”}”);
    var MyKey=Object.keys(userData['Chart1']);
    var MyVal=Object.values(userData['Chart1']);
    var点=[];
    对于(b=0;b
    
  • 在您的示例中,json字符串中缺少一些字符

  • Object.key
    Object.value
    返回数组,不要将它们括在
    []

  • 您正在存储字符串,但您的点可能需要
    x
    y
    的数字。您可以使用
    +
    运算符(或
    parseInt
    Number
    )进行转换

  • var userData=JSON.parse(“{”Chart1:{”1:“4”,“4:“4”,“10:“4”}”);
    var MyKey=Object.keys(userData['Chart1']);
    var MyVal=Object.values(userData['Chart1']);
    var点=[];
    对于(b=0;b控制台日志(点)您可以通过使用Object.entries来获取密钥对值,然后将其映射为x=key和y=value

    const x = {Chart1:{"1": "4","4": "4","10": "4"}};
    
    const chartKeyValuePair = Object.entries(x.Chart1);
    const xy = chartKeyValuePair.map(([key, value]) => {return {x:key, y: value}});
    console.log(xy);
    

    您可以通过使用Object.entries来获取密钥对值,然后将其映射为x=key和y=value

    const x = {Chart1:{"1": "4","4": "4","10": "4"}};
    
    const chartKeyValuePair = Object.entries(x.Chart1);
    const xy = chartKeyValuePair.map(([key, value]) => {return {x:key, y: value}});
    console.log(xy);
    

    你太复杂了!如果在
    循环中为…使用
    ,则会获得数据中每个属性的键,并且可以使用该键引用值。无需Object.keys等演示:

    var userData=JSON.parse(“{”Chart1:{”1:“4”,“4:“4”,“10:“4”}”);
    var点=[];
    for(输入userData.Chart1){
    点。推({
    x:钥匙,
    y:userData.Chart1[键]
    });
    }
    
    控制台日志(点)你把它复杂化了!如果在
    循环中为…使用
    ,则会获得数据中每个属性的键,并且可以使用该键引用值。无需Object.keys等演示:

    var userData=JSON.parse(“{”Chart1:{”1:“4”,“4:“4”,“10:“4”}”);
    var点=[];
    for(输入userData.Chart1){
    点。推({
    x:钥匙,
    y:userData.Chart1[键]
    });
    }
    
    控制台日志(点)您可以使用
    Object.entries()

    var userData=JSON.parse(“{”Chart1:{”1:“4”,“4:“4”,“10:“4”}”);
    const data=Object.entries(userData['Chart1']).map([x,y])=>({x,y}));
    
    控制台日志(数据)您可以使用
    Object.entries()

    var userData=JSON.parse(“{”Chart1:{”1:“4”,“4:“4”,“10:“4”}”);
    const data=Object.entries(userData['Chart1']).map([x,y])=>({x,y}));
    
    控制台日志(数据)谢谢,它几乎可以工作,但是它给出了输出{x:“1”,y:“4”}而不是{x:1,y:4},我怎么能把它解析成int?谢谢,它几乎可以工作,但是它给出了输出{x:“1”,y:“4”}而不是{x:1,y:4},我怎么能把它解析成int?谢谢,它几乎可以工作,但是它给出了输出{x:“1”,y:“4},而不是{x:1,y:4},如何将其解析为int?使用parseInt:
    返回{x:parseInt(key),y:parseInt(value)}谢谢,它几乎可以工作,但是它给出了输出{x:“1”,y:“4”}而不是{x:1,y:4},如何将其解析为int?使用parseInt:
    返回{x:parseInt(key),y:parseInt(value)}