![](/img/trans.png)
[英]Best way in JavaScript to “intersect” two arrays of JSON objects by common property?
[英]How to determine intersect objects in json array with javascript?
我有這樣的 json 數據:
[{
"Id": 1,
"Name": "Test 1",
"Time": {
"start": "22:00",
"end": "22:30",
"duration": 30
}
}, {
"Id": 2,
"Name": "Test 2",
"Time": {
"start": "22:05",
"end": "22:35",
"duration": 30
}
}, {
"Id": 3,
"Name": "Test 3",
"Time": {
"start": "23:25",
"end": "23:40",
"duration": 15
}
},{
"Id": 4,
"Name": "Test 4",
"Time": {
"start": "22:15",
"end": "22:50",
"duration": 15
}
}
]
我想得到這樣的結果,確定哪個與Time相交:
[
["Test 1", "Test 2", "Test 4"],
["Test 3"]
]
我有解決方案,但它太復雜了,我在彼此內部使用了 4 個循環
如果有更簡單的解決方法,請指教,謝謝!
嘗試聚合,我不確定這是否完全符合您的要求,
$addFields
添加新字段startHour
,使用$split
從字符串中拆分字符串小時和分鍾,並且$arrayElemAt
返回第一個元素表示小時$group
by startHour
並制作Name
數組db.collection.aggregate([
{
$addFields: {
startHour: {
$arrayElemAt: [{ $split: ["$Time.start", ":"] }, 0]
}
}
},
{
$group: {
_id: "$startHour",
Name: { $push: "$Name" }
}
}
])
結果:
[
{
"Name": ["Test 1","Test 2","Test 4"],
"_id": "22"
},
{
"Name": ["Test 3"],
"_id": "23"
}
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.