gpt4 book ai didi

javascript - 以编程方式更改为对象中的另一个键

转载 作者:行者123 更新时间:2023-12-02 23:32:24 26 4
gpt4 key购买 nike

我正在尝试为 Chart.js 准备数据,因此我必须以编程方式更改对象键。我发现这个硬编码版本可以工作。`

fetch('http://...)
.then (results =>{
return results.json();
}).then(data => {
console.log(data);


var utplockadData = {
datasets: [
]
};


for(var i=1; i<Object.keys(data[0][0]).length; i++){
utplockadData.datasets[i] = {label: Object.keys(data[0][0])[i], data: [], pointRadius: 1 ,fill: false, borderColor: "black"};
}
console.log(utplockadData);



for (var i=1; i<data[0].length; i++){
utplockadData.datasets[1].data[i] = {x: data[0][i].timestamp, y: data[0][i].airTemperature};
utplockadData.datasets[2].data[i] = {x: data[0][i].timestamp, y: data[0][i].heaterTemperature};
}
console.log(utplockadData);
})

预期结果:

datasets: Array(3)
1:
borderColor: "black"
data: Array(1441)
[1 … 100]
1: {x: "2019-05-01 00:01:00", y: 4.2}
2: {x: "2019-05-01 00:02:09", y: 4.1}
3: {x: "2019-05-01 00:03:00", y: 4.1}
4: {x: "2019-05-01 00:04:09", y: 4.1}...

但是如果我添加一个包含键地址的数组并更改循环,如下所示:

var enArray = [data[0][i].airTemperature, data[0][i].heaterTemperature];

for (var i=1; i<data[0].length; i++){
utplockadData.datasets[1].data[i] = {x: data[0][i].timestamp, y: enArray[0]};
utplockadData.datasets[2].data[i] = {x: data[0][i].timestamp, y: enArray[1]};

}

结果是这样的,所有键都有相同的值:

非预期结果:

datasets: Array(3)
1:
borderColor: "black"
data: Array(1441)
[1 … 100]
1: {x: "2019-05-01 00:01:00", y: 4.1}
2: {x: "2019-05-01 00:02:09", y: 4.1}
3: {x: "2019-05-01 00:03:00", y: 4.1}
4: {x: "2019-05-01 00:04:09", y: 4.1}
5: {x: "2019-05-01 00:05:00", y: 4.1}
6: {x: "2019-05-01 00:06:00", y: 4.1}
7: {x: "2019-05-01 00:07:00", y: 4.1}...

我不知道这是怎么回事。如何访问airTemperature 和heaterTemperature 的值而不将它们全部添加到for 循环中?

更新:从后端添加示例数据。

[

[
{timestamp: '2019-05-01 01:38:00',
airTemperature: 3.5,
heaterTemperature: 2.6 },

{timestamp: '2019-05-01 01:39:00',
airTemperature: 3.5,
heaterTemperature: 2.6 },
],

"text"

]

最佳答案

看起来你的 enArray 并不是你想象的那样......

var enArray = [data[0][i].airTemperature, data[0][i].heaterTemperature];

由于您的 i 是单个值,因此您的 enArray 将是一个包含两个值的平面数组,即 [4.1, 4.2]。这些将在您的新循环中反复使用。

如果您仍然遇到问题,我建议将其剥离回您可以创建为 codepen 或类似内容的最简单示例。仅此一点就可能会引导您找到解决方案,但如果没有,其他人更有可能提供帮助。

关于javascript - 以编程方式更改为对象中的另一个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56441602/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com