const arr = [
{"datetime":"2018/8/5","value":85,"type":"A"},
{"datetime":"2018/8/10","value":7,"type":"B"},
{"datetime":"2018/8/10","value":73,"type":"A"}
];
如您在代码片段中所见,我有一个数组。我的问题是我需要每天检查一些东西:
- 对于
A value > 60
的每一天或者当B value > 6
然后做点什么。 - 否则当
A value <= 60
什么时候B value <= 6
然后做点别的。
而且我不知道如何使用当前数组结构进行此检查,因为循环中的每一步都是不同的一天。我想同时比较一天的所有值。
是否可以将数组转换成这样?然后我将能够每天比较一天...
const arr = [
{"datetime":"2018/8/5","valueA":85,"valueB":undefined},
{"datetime":"2018/8/10","valueB":7,"valueA":73}
];
谢谢!
最佳答案
您可以通过缩减为对象来创建日期组。然后只需在该对象中设置适当的值。最后,您的数组将位于分组对象的 Object.keys()
中。
[正如您可能从评论中推测的那样,最终数组的顺序无法保证,因为对象键和值无法保证。如果您的原始数据是按日期排序的,您应该在问题中这样说,因为如果顺序得到保证,将会有更有效的方法来做到这一点]。
const arr = [{"datetime":"2018/8/5","value":85,"type":"A"},{"datetime":"2018/8/10","value":7,"type":"B"},{"datetime":"2018/8/10","value":73,"type":"A"}];
let groups = arr.reduce((obj, {datetime, value, type}) => {
if (!obj[datetime]) obj[datetime] = {datetime, valueA:undefined, valueB:undefined}
let currentKey = type == 'A' ? "valueA" : "valueB"
obj[datetime][currentKey] = value
return obj
},{})
let newArr = Object.values(groups)
console.log(newArr)
关于javascript - 如何转换一个js数组以使其成为一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54559672/