JavaScript-删除两个数组之间的多个相同值

JavaScript-删除两个数组之间的多个相同值,javascript,arrays,object,filter,compare,Javascript,Arrays,Object,Filter,Compare,我目前正在编写一个代码,需要比较两个数组并删除多个同名元素。这里是数组 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"] bo

我目前正在编写一个代码,需要比较两个数组并删除多个同名元素。这里是数组

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、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('-')));
});
最后的结果应该是这样的,只留下
空的
-数组中的元素,这些元素与
空的
-数组没有相似之处:

FRAMIA320.7 - 0h 36 m
FRAMIA350.1 - 2h 21 m
FRAMIA210.2 - 2h 21 m
请注意,阵列之间的相似性每天都在变化,有时可能有2个相似的元素,而其他日子可能有8个或更多


有什么快速有效的方法吗?

您需要两个循环,每个数组一个,然后比较每个数组字符串的第一部分,如下所示:

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"]

for(i=0;i<vacant.length;i++) {
    item1 = vacant[i].split('-')[0];
    for(j=0;j<booked.length;j++) {
        item2 = booked[j].split('-')[0];
        if(item1===item2) {
                console.log('item number '+i+' in vacant is the same as item number '+j+' in booked');
        }
    }
}
空闲=[
“FRAMIA420.2-0h 36米”,
“FRAMIA510.4-0高36米”,
“FRAMIA320.7-0高36米”,
“FRAMIA520.7-0小时36米”,
“FRAMIA450.3-1h 36米”,
“FRAMIA350.1-2h 21米”,
“FRAMIA210.2-2h 21米”,
“FRAMIA340.2-2h 36米”]
预订=[
“FRAMIA440.5-13h 0米”,
“FRAMIA540.2-3h 45米”,
“FRAMIA340.2-5小时45米”,
“FRAMIA250.1-3h 45米”,
“FRAMIA420.2-3h 45米”,
“FRAMIA540.1-13h 0米”,
“FRAMIA520.5-3h 45米”,
“FRAMIA240.4-3h 45米”,
“FRAMIA510.2-7小时0米”,
“FRAMIA510.4-2h 45米”,
“FRAMIA520.7-2h 45米”,
“FRAMIA450.1-1小时45米”,
“FRAMIA450.3-2h 0米”]

对于(i=0;i您需要两个循环,每个数组一个,并比较每个数组字符串的第一部分,如下所示:

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"]

for(i=0;i<vacant.length;i++) {
    item1 = vacant[i].split('-')[0];
    for(j=0;j<booked.length;j++) {
        item2 = booked[j].split('-')[0];
        if(item1===item2) {
                console.log('item number '+i+' in vacant is the same as item number '+j+' in booked');
        }
    }
}
空闲=[
“FRAMIA420.2-0h 36米”,
“FRAMIA510.4-0高36米”,
“FRAMIA320.7-0高36米”,
“FRAMIA520.7-0小时36米”,
“FRAMIA450.3-1h 36米”,
“FRAMIA350.1-2h 21米”,
“FRAMIA210.2-2h 21米”,
“FRAMIA340.2-2h 36米”]
预订=[
“FRAMIA440.5-13h 0米”,
“FRAMIA540.2-3h 45米”,
“FRAMIA340.2-5小时45米”,
“FRAMIA250.1-3h 45米”,
“FRAMIA420.2-3h 45米”,
“FRAMIA540.1-13h 0米”,
“FRAMIA520.5-3h 45米”,
“FRAMIA240.4-3h 45米”,
“FRAMIA510.2-7小时0米”,
“FRAMIA510.4-2h 45米”,
“FRAMIA520.7-2h 45米”,
“FRAMIA450.1-1小时45米”,
“FRAMIA450.3-2h 0米”]

对于(i=0;i您可以构建
booked
数组中所有名称的列表,然后遍历空数组,检查该名称是否在booked name列表中

空闲=[
“FRAMIA420.2-0h 36米”,
“FRAMIA510.4-0高36米”,
“FRAMIA320.7-0高36米”,
“FRAMIA520.7-0小时36米”,
“FRAMIA450.3-1h 36米”,
“FRAMIA350.1-2h 21米”,
“FRAMIA210.2-2h 21米”,
“FRAMIA340.2-2h 36米”
]
预订=[
“FRAMIA440.5-13h 0米”,
“FRAMIA540.2-3h 45米”,
“FRAMIA340.2-5小时45米”,
“FRAMIA250.1-3h 45米”,
“FRAMIA420.2-3h 45米”,
“FRAMIA540.1-13h 0米”,
“FRAMIA520.5-3h 45米”,
“FRAMIA240.4-3h 45米”,
“FRAMIA510.2-7小时0米”,
“FRAMIA510.4-2h 45米”,
“FRAMIA520.7-2h 45米”,
“FRAMIA450.1-1小时45米”,
“FRAMIA450.3-2h0米”
]
函数getName(str){
返回str.substring(0,str.indexOf('-');
}
var bookedNames=[];
booked.forEach(功能(bookedStr){
bookedNames.push(getName(bookedStr))
});
var UniqueSpank=[];
空的。forEach(函数(vacantStr){
var vacantName=getName(vacantStr);
如果(!BookedName.includes(vacantName))
唯一空推(vacantStr)
});

console.log(uniqueungable);
您可以构建
booked
数组中所有名称的列表,然后遍历空数组,检查该名称是否在booked name列表中

空闲=[
“FRAMIA420.2-0h 36米”,
“FRAMIA510.4-0高36米”,
“FRAMIA320.7-0高36米”,
“FRAMIA520.7-0小时36米”,
“FRAMIA450.3-1h 36米”,
“FRAMIA350.1-2h 21米”,
“FRAMIA210.2-2h 21米”,
“FRAMIA340.2-2h 36米”
]
预订=[
“FRAMIA440.5-13h 0米”,
“FRAMIA540.2-3h 45米”,
“FRAMIA340.2-5小时45米”,
“FRAMIA250.1-3h 45米”,
“FRAMIA420.2-3h 45米”,
“FRAMIA540.1-13h 0米”,
“FRAMIA520.5-3h 45米”,
“FRAMIA240.4-3h 45米”,
“FRAMIA510.2-7小时0米”,
“FRAMIA510.4-2h 45米”,
“FRAMIA520.7-2h 45米”,
“FRAMIA450.1-1小时45米”,
“FRAMIA450.3-2h0米”
]
函数getName(str){
返回str.substring(0,str.indexOf('-');
}
var bookedNames=[];
booked.forEach(功能(bookedStr){
bookedNames.push(getName(bookedStr))
});
var UniqueSpank=[];
空的。forEach(函数(vacantStr){
var vacantName=getName(vacantStr);
如果(!BookedName.includes(vacantName))
唯一空推(vacantStr)
});
console.log(UniqueSpank);
尝试以下操作:

var空闲=[
“FRAMIA420.2-0h 36米”,
“FRAMIA510.4-0高36米”,
“FRAMIA320.7-0高36米”,
“FRAMIA520.7-0小时36米”,
“FRAMIA450.3-1h 36米”,
“FRAMIA350.1-2h 21米”,
“FRAMIA210.2-2h 21米”,
“FRAMIA340.2-2h 36米”];
var=[
“FRAMIA440.5-13h 0米”,
“FRAMIA540.2-3h 45米”,
“FRAMIA340.2-5小时45米”,
“FRAMIA250.1-3h 45米”,
“FRAMIA420.2-3h 45米”,
“FRAMIA540.1-13h 0米”,
“FRAMIA520.5-3h 45米”,
“FRAMIA240.4-3h 45米”,
“FRAMIA510.2-7小时0米”,
“FRAMIA510.4-2h 45米”,
“FRAMIA520.7-2h 45米”,
“FRAMIA450.1-1小时45米”,
“FRAMIA450.3-2h0米”];
空闲=空闲。过滤器(功能(元素){
var roomName=element.split('-')[0];
var索引=记账。findIndex(功能(记账){
return roomName==booking.split('-')[0];
});
收益指数==-1;
});
console.log(空);
尝试以下操作:

var空闲=[
“FRAMIA420.2-0h 36米”,
“FRAMIA510.4-0高36米”,
“FRAMIA320.7-0高36米”,
“FRAMIA520.7-0小时36米”,
“FRAMIA450.3-1h 36米”,
“FRAMIA350.1-2h 21米”,
“FRAMIA210.2-2h 21米”,
“FRAMIA340.2-2h 36米”];
var=[
“FRAMIA440.5-13h 0米”,
“FRAMIA540.2-3h 45米”,
“FRAMIA340.2-5小时45米”,
“FRAMIA250.1-3h 45米”,
“FRAMIA420.2-3h 45米”,
“FRAMIA540.1-13h 0米”,
“FRAMIA520.5-3h 45米”,
“FRAMIA240.4-3h 45米”,
“FRAMIA510.2-7小时0米”,
“FRAMIA510.4-2h 45米”,
“FRAMIA520.7-2h 45米”,
“FRAMIA450.1-1小时45米”,
“FRAMIA450.3-2h0米”];
v