【发布时间】:2018-01-30 00:18:34
【问题描述】:
我有一个包含时间和数据的 json 对象数组。
基本上,每个元素,都包含如下的时间、id和用户
[
{
"id": "abc",
"ts": "2017-08-17T20:42:12.557229",
"userid": "seb"
},
{
"id": "def",
"ts": "2017-08-17T20:42:52.724773",
"userid": "seb"
},
{
"id": "ghi",
"ts": "2017-08-17T20:42:53.724773",
"userid": "matt"
},
{
"id": "jkl",
"ts": "2017-08-17T20:44:50.557229",
"userid": "seb"
},
{
"id": "mno",
"ts": "2017-08-17T20:44:51.724773",
"userid": "seb"
},
{
"id": "pqr",
"ts": "2017-08-17T20:50:52.724773",
"userid": "seb"
}
]
如果用户 ID 相同,我的目标是删除彼此太近的对象。如果时间差小于 2 秒,我们删除元素。
从列表中,我应该得到列表
[
{
"id": "abc",
"ts": "2017-08-17T20:42:12.557229",
"userid": "seb"
},
{
"id": "def",
"ts": "2017-08-17T20:42:52.724773",
"userid": "seb"
},
{
"id": "ghi",
"ts": "2017-08-17T20:42:53.724773",
"userid": "matt"
},
{
"id": "pqr",
"ts": "2017-08-17T20:50:52.724773",
"userid": "seb"
}
]
即使用户 matt 和 seb 的 2 个对象在 2 秒内彼此太近,我们也必须保留元素,因为它不是同一个用户
"ts": "2017-08-17T20:42:52.724773" for seb
和
"ts": "2017-08-17T20:42:53.724773" for matt
知道如何用 Ruby 编写代码吗?我总是将元素 n 与 n-1 进行比较,并在需要时删除 n-1
【问题讨论】:
-
如果数组是
[{id: "abc", ts: 2017-08-17T20:40:00.0, userid: "seb"}, {id: "def", ts: 2017-08-17T20:40:01.1, userid: "seb"}, {id: "ghi", ts: 2017-08-17T20:40.02.2, userid: "seb"}],期望的返回值是多少?我假设键是符号,所以不需要引号,并且时间是Time或DateTime对象,所以引号也不适用。 -
您想删除 both、id
'jkl'和 id'mno'是否正确? -
@CarySwoveland 虽然现在 Ruby 可以解析
"key": "value",但我认为这是一个 JSON 字符串。