如何提取数组中不匹配的值

时间:2019-03-11 00:35:53

标签: javascript arrays

我有以下代码可以很好地完成工作,它检测array1的所有值是否都出现在array2中。

var array1 = ['Bob','Freddy', 'Johnson'];
var array2 = ['Bob', 'Johnson', 'Freddy'];
var isValid = 'no';

//Is the array inverted or contains an omission but no additions?
if (array1.every(v => array2.includes(v)) == true){ //All names appear on array2                
    isValid = 'yes';
} else { 
    isValid = 'no';
}

console.log('inverted = '+isValid); //yes

但给出以下数组:

var array1 = ['Bob','Fredy', 'Johnson'];

我得到了预期结果“否”,但是,我想进一步询问用户是否应该将“弗雷迪”等同于“弗雷迪”。

这是我为用户提供答案后所需要的:

var array1 = ['Bob','Fredy', 'Johnson'];
var array2 = ['Bob', 'Johnson', 'Freddy'];
var isValid = 'no';
var acceptable = 'yes'; // assume we asked the user the question and this is their answer

//Is the array inverted or contains an omission but no additions?
if (array1.every(v => array2.includes(v)) == true){ //All names appear on array2                
    isValid = 'yes';
} else { 
    isValid = 'no';

    console.log('Should we consider '+name1+' to be the same as '+name2+'?');

    if (acceptable == 'yes') {
        isValid = 'no';
    } 
}

console.log('inverted = '+isValid); //yes

我的问题是,如何挑选下一行中找到的name1name2

console.log('Should we consider '+name1+' to be the same as '+name2+'?);

还要考虑array1中的许多名称(不确定数量)可能与array2中的名称的拼写有所不同。

我们应该忽略array1中与array2中匹配的所有名称。

array1array2中的名称可以重复。例如:

var array1 = ['Bob', 'Bob', 'Freddy', 'Johnson'];
var array2 = ['Bob', 'Johnson', 'Bobb', 'Freddy']; // we should question if Bob matches Bobb

var array1 = ['Bobb', 'Bob', 'Freddy', 'Johnson'];
var array2 = ['Bob', 'Johnson', 'Bobb', 'Freddy']; // there is no questioning because all the names match, sequential order doesn't matter.

var array1 = ['Boy', 'Bobb', 'Freddy', 'Johnson'];
var array2 = ['Bob', 'Johnson', 'Freddy']; // we should question if Boy matches Bob, if not, then ask if Bobb matches Bobb

var array1 = ['Boy', 'Bobb', 'Freddy', 'Johnson'];
var array2 = ['Bob', 'Boi', 'Johnson', 'Freddy']; 

在最后一个示例中,我们应该询问Boy是否与Bob匹配,如果不匹配,然后询问Bobb是否与Bob匹配,然后询问Boy是否与Boi匹配,然后询问Boy是否与Boi匹配...始终保持用户说的是。如果用户说Boy与Bob匹配,则无需询问Bobb是否与Bob匹配。如果用户在任何时候说给定值根本不匹配,则isValid = no。 (男孩=鲍勃:否+男孩=鲍伊:否,那么isValid =否,所以甚至不必再问鲍勃了。)

谢谢。

0 个答案:

没有答案