const arr = [
{"datetime":"2018/8/5","value":85,"type":"A"},{"datetime":"2018/8/10","value":7,"type":"B"},"value":73,"type":"A"}
];
您可以在代码段中看到一个数组.我的问题是我需要每天检查一些东西:
>对于A值> 60或B值> 6然后做点什么.
>否则,当A值<= 60且B值<= 6时,则执行其他操作.
而且我不知道如何使用当前的数组结构执行此检查,因为循环中的每一步都是不同的日子.我想同时比较一天中的所有值.
是否可以将数组转换为如下形式?然后,我将能够比较每天的日期…
const arr = [
{"datetime":"2018/8/5","valueA":85,"valueB":undefined},"valueB":7,"valueA":73}
];
谢谢!
最佳答案
您可以通过简化为对象来创建日期组.然后只需在该对象中设置适当的值.最后,您的数组将位于分组对象的Object.keys()中.
原文链接:https://www.f2er.com/js/531140.html[如您可能从注释中推测的那样,由于不能保证对象键和值,因此不能保证最终数组的顺序.如果按日期对原始数据进行了排序,那么您应该在问题中这样说,因为如果有保证的话,将会有更有效的方法来执行此操作].
const arr = [{"datetime":"2018/8/5","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)