gpt4 book ai didi

javascript - json 对象中的默认值基于同一数组中其他对象的内容

转载 作者:行者123 更新时间:2023-12-01 04:05:10 25 4
gpt4 key购买 nike

我现在很迷茫,已经为此工作了大约 6 天,所以如果这有点令人困惑,请原谅我。我正在使用 NVD3 根据来自 BigQuery 的数据显示一些图表。所有传入的数据都是正确的,图形实现也是正确的,问题在于实际的 JSON 数据。多条形图要求每个“数据集”在初始数组下具有相同的日期和相同数量的值。根据我的数据,如果用户当天没有记录事件或其他内容,有时会出现缺失值。

我在这里尝试执行的总体思路是循环遍历初始 json 并附加“缺失”值。例如,这将是我从 BigQuery 和 API 中获取的初始数据:

[
"t1":{
"target": "t1",
"datapoints": [
[
16.0,
1483747200.0
],
[
10.0,
1484352000.0
]
]
},
"t2":{
"target": "t2",
"datapoints": [
[
10.0,
1483660800.0
],
[
19.0,
1484006400.0
],
[
10.0,
1484956800.0
]
]
}
]

您可以在此处看到第一个对象有一个包含 2 个值的数据点数组,第二个对象有一个包含 3 个值的数据点数组。数据点数组的第 1 个索引包含 UNIX 日期,整个对象中的每个数据点数组都必须有一个包含日期的数组,然后 0 作为默认值。所以格式化的数据看起来像这样:

[
"t1":{
"target": "t1",
"datapoints": [
[
16.0,
1483747200.0
],
[
10.0,
1484352000.0
],
[
0.0,
1483660800.0
],
[
0.0,
1484006400.0
],
[
0.0,
1484956800.0
]
]
},
"t2":{
"target": "t2",
"datapoints": [
[
10.0,
1483660800.0
],
[
19.0,
1484006400.0
],
[
10.0,
1484956800.0
],
[
0.0,
1483747200.0
],
[
0.0,
1484352000.0
]
]
}
]

我真的不知道从这里该去哪里,任何帮助都会非常有帮助。我已经为此工作好几天了,目前只是在磨我的齿轮。谢谢

基本上,在一个数组中找到但在其他数组中找不到的每个值都应该采用时间戳,但将第一个值/索引设置为 0。

我还应该提到,该查询仅查询 30 天前的数据,因此每个数据点数组最多有 30 个数组。

最佳答案

您必须首先进行一些数据处理才能获取所有日期,然后只需填写每个日期的实际数据即可。

const json = [
{
"target": "t1",
"datapoints": [
[
16.0,
1483747200.0
],
[
10.0,
1484352000.0
]
]
},
{
"target": "t2",
"datapoints": [
[
10.0,
1483660800.0
],
[
19.0,
1484006400.0
],
[
10.0,
1484956800.0
]
]
}
]

// using es6 set
const dates = new Set()

json.forEach( x => x.datapoints.map( dp => dates.add(dp[1]) ) )

// all dates are there
dates.forEach( d => console.log(d) )

const fillDp = dp => {
return Array.from(dates).sort().map( d => dp.find( x => x[1] === d ) || [0,d] )
}

const result = json.map( x => Object.assign(x, {datapoints: fillDp(x.datapoints)}) )

console.log(JSON.stringify(result[0].datapoints))

关于javascript - json 对象中的默认值基于同一数组中其他对象的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41898757/

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