【问题标题】:Loop Script for Nested Arrays - JS嵌套数组的循环脚本 - JS
【发布时间】:2020-09-16 14:00:08
【问题描述】:

我正在尝试为我的应用创建一个循环脚本,用于检查用户数组是否已满,如果没有,则放入用户 ID。

我的 JSON 文件基于 MongoDB,它有 24 个条目(小时)。每个条目都有一个mins 数组(见下文)

我尝试了以下脚本,但它应该以原始形式检查每个数组,而不考虑 min 值。

const hour = await db.Timer.findOne({hour: time[1]}) // finding an hour in the DB
const timer = await db.Timer.findOne({hour: time[1]}, { mins: {"$elemMatch": {min: time[2]}}}) // finding a minute
let maxUsers = 3
for(let i = 0; i < hour.mins[i].users.length; i++) {
    if(hour.mins[i].users.length < maxUsers){
      console.log(i)
    } 
}

hourtimer 是数组,可以通过time[1](小时)和time[2](分钟)找到。这是我应该使用的。

// how the 'mins' array looks like
[
  {
    users: [ 432143, 543254, 6545423 ],
    min: 21
  },
  {
    users: [ 3421, 432143, 43213 ],
    min: 22
  },
  { users: [ 7735 ], min: 23 },
  { users: [], min: 20 }
]

// output for 'hour'
{
  hour: 15,
  mins: [
    { users: [Array], min: 21 },
    { users: [Array], min: 22 },
    { users: [Array], min: 23 },
    { users: [], min: 20 }
  ]
}

// output for 'timer'
{
  mins: [ { users: [Array], min: 21 } ]
}

请建议如何按分钟检查数组。

【问题讨论】:

  • JSON 是一种用于数据交换的文本符号(More here.) 如果您正在处理 JavaScript 源代码,而不是处理 string,那么您就不是在处理 JSON。
  • @T.J.Crowder 谢谢。我是新手,所以也许我在这里错了。你能帮帮我吗?不胜感激!
  • 恐怕我不会使用 MongoDB。另外,我认为从上面看不清楚hourtimer的结构是什么......?
  • @T.J.Crowder,我更新了帖子,请检查一下,谢谢!

标签: javascript arrays json mongodb


【解决方案1】:

对于那些对解决方案感兴趣的人。

这是我解决问题的方法:

let mitunes = hour.mins
      const guys = mitunes.filter(mitunes => mitunes.users.length < 3 && mitunes.min > time[2]);
      console.log(guys[0].min)

【讨论】:

    猜你喜欢
    • 2020-06-02
    • 2022-05-12
    • 2021-11-27
    • 2021-08-21
    • 2016-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    相关资源
    最近更新 更多