将两个或多个 JSON 对象数组合并为一个数组,保留唯一性
Merge two or more arrays of JSON objects into one array, preserving uniqueness
我有两个JSON对象数组,我正在尝试按日期将它们合并到一个数组中,而不会创建任何重复项。 jQuery的extend((函数似乎不能为我解决问题。我意识到可以使用嵌套的 $.each 语句,但这里关注的数据可能会变得非常大,所以我宁愿避免 O(Log N * Log M(...
[
{
"date":"2016-03-16",
"timesOff":[
"18:00 - 20:00",
"20:00 - 22:00"
],
"appointments":[
{
"projectId":"adbc5010-ea7d-4993-b442-24cce609c3f8",
"customerName":"Johnny",
"timeSlot":"10:00 - 12:00",
"startTime":""
},
{
"projectId":"60e0bed4-141b-46f0-91cd-f570fb1f886d",
"customerName":"Jimmy",
"timeSlot":"14:00 - 16:00",
"startTime":""
}
]
},
{
"date":"2016-03-02",
"timesOff":[
"10:00 - 12:00",
"14:00 - 16:00"
],
"appointments":[
{
"projectId":"041b6496-4905-42b3-8057-87dc2b8c482a",
"customerName":"Billy",
"timeSlot":"08:00 - 10:00",
"startTime":""
},
{
"projectId":"f6e0743a-e714-4c92-be63-a14898ec1e4d",
"customerName":"Bob",
"timeSlot":"10:00 - 12:00",
"startTime":""
}
]
}
]
[
{
"date":"2016-03-16",
"timesOff":[
"14:00 - 16:00",
"18:00 - 20:00"
],
"appointments":[
{
"projectId":"041b6496-4905-42b3-8057-87dc2b8c482a",
"customerName":"Billy",
"timeSlot":"08:00 - 10:00",
"startTime":""
},
{
"projectId":"f6e0743a-e714-4c92-be63-a14898ec1e4d",
"customerName":"Bob",
"timeSlot":"10:00 - 12:00",
"startTime":""
}
]
},
{
"date":"2016-03-02",
"timesOff":[
"18:00 - 20:00",
"20:00 - 22:00"
],
"appointments":[
{
"projectId":"041b6496-4905-42b3-8057-87dc2b8c482a",
"customerName":"Billy",
"timeSlot":"08:00 - 10:00",
"startTime":""
},
{
"projectId":"f6e0743a-e714-4c92-be63-a14898ec1e4d",
"customerName":"Bob",
"timeSlot":"10:00 - 12:00",
"startTime":""
}
]
}
]
这些应该像这样合并:
[
{
"date":"2016-03-16",
"timesOff":[
"14:00 - 16:00",
"18:00 - 20:00",
"20:00 - 22:00"
],
"appointments":[
{
"projectId":"041b6496-4905-42b3-8057-87dc2b8c482a",
"customerName":"Billy",
"timeSlot":"08:00 - 10:00",
"startTime":""
},
{
"projectId":"f6e0743a-e714-4c92-be63-a14898ec1e4d",
"customerName":"Bob",
"timeSlot":"10:00 - 12:00",
"startTime":""
},
{
"projectId":"adbc5010-ea7d-4993-b442-24cce609c3f8",
"customerName":"Johnny",
"timeSlot":"10:00 - 12:00",
"startTime":""
},
{
"projectId":"60e0bed4-141b-46f0-91cd-f570fb1f886d",
"customerName":"Jimmy",
"timeSlot":"14:00 - 16:00",
"startTime":""
}
]
},
{
"date":"2016-03-02",
"timesOff":[
"10:00 - 12:00",
"14:00 - 16:00",
"20:00 - 22:00"
],
"appointments":[
{
"projectId":"041b6496-4905-42b3-8057-87dc2b8c482a",
"customerName":"Billy",
"timeSlot":"08:00 - 10:00",
"startTime":""
},
{
"projectId":"f6e0743a-e714-4c92-be63-a14898ec1e4d",
"customerName":"Bob",
"timeSlot":"10:00 - 12:00",
"startTime":""
},
{
"projectId":"041b6496-4905-42b3-8057-87dc2b8c482a",
"customerName":"Billy",
"timeSlot":"08:00 - 10:00",
"startTime":""
},
{
"projectId":"f6e0743a-e714-4c92-be63-a14898ec1e4d",
"customerName":"Bob",
"timeSlot":"10:00 - 12:00",
"startTime":""
}
]
}
]
我的第一个想法是同时在两个数组上分别运行 $.each,然后将值分配给临时变量(即 x[value.date] = value(,然后对它们运行 $.extend。这有效,但是它返回一个数组,例如 ["2016-03-02":Object, "2016-03-16":Object],该数组不适用于应用程序的目的。如何在没有"Something":Object的情况下合并它们?
提前谢谢。
我认为你需要两个phpjs工具。
http://phpjs.org/functions/array_merge/(合并数组(
或
http://phpjs.org/functions/array_merge_recursive(用递归模式合并数组,我认为这是你的要求(
和
http://phpjs.org/functions/array_unique(删除数组中重复和空的元素(
结合合并+唯一,您将获得预期的结果。只需复制并粘贴函数定义,然后使用它们
相关文章:
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 根据id将json数组组合为一个json数组
- JavaScript数组包含一个值
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- jQuery$.inArray()总是返回-1和一个对象数组
- 在数组中的一个元素上设置多个值
- javascript处理一个对象数组以获得一个新的对象数组
- 作为一个二维数组,从ajax接收
- 你能用来自数组的属性名称生成一个对象吗
- 多维关联数组的最后一个索引
- 如何创建一个方法来验证数组的范围
- 循环以检查数组中的最后一个图像
- 在Javascript中将一个值和字符串数组转换为if语句
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 如何将一个对象添加到每个对象数组中
- 如何创建一个谷歌地图地理坐标数组
- 如何从另一个带下划线的数组中筛选带元素的数组
- 使用window.location.htm和匹配的URL数组(一个用于桌面,一个用于移动)将桌面网站重定向到移动
- Javascript排序多维数组-一个完整的例子
- 刽子手的游戏.2数组.一个需要相应地更新另一个