【发布时间】:2018-04-24 22:33:43
【问题描述】:
假设我们有 2 个数组:
array1 有 1 个事件:
var array1 = [
{
start: '2018-04-24T10:00:00',
end: '2018-04-24T11:00:00',
title: 'Been to Break'
}
];
array2 有 3 个事件:
var array2 = [
{
start: '2018-04-24T08:00:00',
end: '2018-04-24T10:00:00',
title: 'Lunch'
},
{
start: '2018-04-24T10:00:00',
end: '2018-04-24T11:00:00',
title: 'Break'
},
{
start: '2018-04-24T13:00:00',
end: '2018-04-24T14:00:00',
title: 'Meeting'
}
];
期望的结果应该是一个新数组:array3
var array3 = [
{ //event 1
start: '2018-04-24T08:00:00',
end: '2018-04-24T10:00:00',
title: 'Lunch'
},
{ //event 2
start: '2018-04-24T10:00:00',
end: '2018-04-24T11:00:00',
title: 'Been to Break'
},
{ //event 3
start: '2018-04-24T13:00:00',
end: '2018-04-24T14:00:00',
title: 'Meeting'
}
];
从 array3 中的期望结果可以看出,array2 中的事件 2 被 array1 中的事件 1 替换,因为起始值和结束值是匹配的。
这可以在 JavaScript 中完成吗?如果我们有 1000 个要循环的事件,那么性能呢
谢谢
【问题讨论】:
-
数组是否按日期排序?是否需要经常进行此搜索?
-
@CrazyTrain 在这个例子中是的,但我有一个案例不是
-
如果它已排序并且您保持排序,您可以执行二进制搜索以获得比线性搜索更高的性能。如果此操作会频繁发生,则可能值得维护排序顺序。
-
@CrazyTrain 刚刚意识到事件是从数据库中提取的,然后可以在将它们分配给数组之前对其进行排序。根据示例,是否有解决方法来获取 array3。欢呼
-
'Breaky'是从哪里来的?
标签: javascript arrays