javascript-如何将js数组转换为按日排列

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()中.

[如您可能从注释中推测的那样,由于不能保证对象键和值,因此不能保证最终数组的顺序.如果按日期对原始数据进行了排序,那么您应该在问题中这样说,因为如果有保证的话,将会有更有效的方法来执行此操作].

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)

相关文章

kindeditor4.x代码高亮功能默认使用的是prettify插件,prett...
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代...
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小