javascript - 如何转换一个js数组以使其成为一天

标签 javascript arrays

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"}
];

如您在代码片段中所见,我有一个数组。我的问题是我需要每天检查一些东西:

  1. 对于 A value > 60 的每一天或者当 B value > 6然后做点什么。
  2. 否则当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/

相关文章:

javascript - 评估服务器 js 文件的危险

javascript - Leaflet foreach功能自动触发鼠标悬停功能

javascript - 如何在 JavaScript 中使用热键停止 for 循环

php - 打印给定数组中子范围的所有组合

javascript - 如何使用 vue/quasar 验证确认密码

javascript - 获取源脚本中JS中的引用&lt;script&gt;对象

javascript - 将循环结构转换为 JSON

javascript - 如何按表头单击对数组进行排序

Android 将字符串加载到数组中

c - 关于打印阵列