【发布时间】:2017-10-08 20:24:39
【问题描述】:
我目前正在编写需要比较两个数组并删除多个同名元素的代码。这是数组;
vacant = [
"FRAMIA420.2 - 0h 36 m",
"FRAMIA510.4 - 0h 36 m",
"FRAMIA320.7 - 0h 36 m",
"FRAMIA520.7 - 0h 36 m",
"FRAMIA450.3 - 1h 36 m",
"FRAMIA350.1 - 2h 21 m",
"FRAMIA210.2 - 2h 21 m",
"FRAMIA340.2 - 2h 36 m"]
booked = [
"FRAMIA440.5 - 13h 0 m",
"FRAMIA540.2 - 3h 45 m",
"FRAMIA340.2 - 5h 45 m",
"FRAMIA250.1 - 3h 45 m",
"FRAMIA420.2 - 3h 45 m",
"FRAMIA540.1 - 13h 0 m",
"FRAMIA520.5 - 3h 45 m",
"FRAMIA240.4 - 3h 45 m",
"FRAMIA510.2 - 7h 0 m",
"FRAMIA510.4 - 2h 45 m",
"FRAMIA520.7 - 2h 45 m",
"FRAMIA450.1 - 1h 45 m",
"FRAMIA450.3 - 2h 0 m"]
所以这两个数组之间的相似元素是:FRAMIA420.2, FRAMIA510.4, FRAMIA520.7, FRAMIA450 .3 和 FRAMIA340.2
我已经过滤掉了一个元素的时间戳部分,所以我只需要比较名称部分;
var firstPart = [];
vacant.forEach(function (obj1) {
firstPart.push(obj1.substring(0, obj1.indexOf('-')))
});
booked.forEach(function (obj2) {
var c = firstPart.indexOf(obj2.substring(0, obj2.indexOf('-')));
});
最终结果应该是这样的,只留下vacant -array 内的元素,与booked -array 没有相似之处:
FRAMIA320.7 - 0h 36 m
FRAMIA350.1 - 2h 21 m
FRAMIA210.2 - 2h 21 m
请注意,数组之间的相似性每天都在变化,有时可能有 2 个相似的元素,有时可能有 8 个或更多。
有什么快速有效的方法吗?
【问题讨论】:
标签: javascript arrays object filter compare