如何使用JavaScript生成点数组?
我使用JavaScript和Chartjs库来绘制图表。我将点数据存储在JSON中:如何使用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
“图表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字符串,粘贴错误,这只是一个输入错误,但感谢大家的支持
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)}代码>