我有这样的,我是从外部端点得到一个对象,因此不能改变:JavaScript的 - 遍历对象
let obj = {
0: { "time": 1, "day": 1, },
1: { "time": 2, "day": 1, },
2: { "time": 3, "day": 1, },
3: { "time": 1, "day": 2, },
4: { "time": 2, "day": 2, },
5: { "time": 3, "day": 2, }
}
我需要得到它变成像一个格式:
1: {
1: { "time": 1, "day": 1 },
2: { "time": 2, "day": 1 },
3: { "time": 3, "day": 1 },
},
2: {
1: { "time": 1, "day": 2 },
2: { "time": 2, "day": 2 },
3: { "time": 3, "day": 2 },
}
在哪里第一个关键是一天,第二个是时间。
我尝试不起作用
let obj = {
0: { "time": 1, "day": 1, },
1: { "time": 2, "day": 1, },
2: { "time": 3, "day": 1, },
3: { "time": 1, "day": 2, },
4: { "time": 2, "day": 2, },
5: { "time": 3, "day": 2, }
}
let test = {}
let defaultRow = {
1: {},
2: {}
}
Object.keys(obj).forEach((key) => {
if (!test[obj[key]["day"]]) {test[obj[key]["day"]] = defaultRow}
test[obj[key]["day"]][obj[key]["time"]] = obj[key]
})
console.log(test)
这两天包含相同的数据由于某种原因。我怎样才能做到这一点?任何帮助表示赞赏!
问题寻求帮助调试(“**为什么不是这个代码工作?**“)必须包括所需的行为,*特定的问题或错误*和*必要的最短代码*来重现我t **在问题本身**。没有**明确问题陈述**的问题对其他读者没有用处。请参阅:[如何创建最小,完整和可验证示例](https://stackoverflow.com/help/mcve)。 – Andreas
所以你想分割你的数据来显示父项中的每三个项目,这是正确的吗? – codtex
你应该看看reduce函数:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce。这有点复杂,但是你会发现很多资源用“reduce keyword”寻找其他的stackoverflow – HollyPony