我有以下代码可以很好地完成工作,它检测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
我的问题是,如何挑选下一行中找到的name1
和name2
?
console.log('Should we consider '+name1+' to be the same as '+name2+'?);
还要考虑array1
中的许多名称(不确定数量)可能与array2
中的名称的拼写有所不同。
我们应该忽略array1
中与array2
中匹配的所有名称。
array1
和array2
中的名称可以重复。例如:
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 =否,所以甚至不必再问鲍勃了。)
谢谢。