这里的小问题。我在下面遇到了这个挑战。
圣诞节即将到来,圣诞老人有很长的名单可以通过,找到谁应该为重要的一天提供礼物。浏览一个孩子列表,并返回一个列表,其中包含出现在圣诞老人列表中的每个孩子。不要多次添加任何孩子。输出应该排序。比较应区分大小写,并且返回的列表仅返回每个名称的一个副本。 "萨姆"和" sam"是允许的,但" sAm"和" sAm"不是。
这是代码
function findChildren(santasList, children) {
children.forEach(child => {
santasList.forEach(s => {
if(child.toLowerCase() === s.toLowerCase()){
var longerLength = Math.max(child.length, s.length);
for(var i = 0; i < longerLength; i++){
if (child[i] !== s[i]){
console.log(child);
return i;
}
console.log(child);
break;
}
}
});
});
}
let santasList = ["Tom", "Errol", "Sam", "mistyMay","Peter","Jennifer",
"macMerphy"];
let children = ["Errol", "Peter", "jennifer", "mistymay", "MacMerphy"];
findChildren(santasList, children);
这打印; 埃罗尔 彼得 詹妮弗 mistymay MacMerphy
但我相信它应该打印; 埃罗尔 彼得 詹妮弗 MacMerphy?
修复的地方在哪里?
答案 0 :(得分:0)
这是因为
if (child.toLowerCase() === s.toLowerCase()) {
以不区分大小写的方式进行比较。
此外,您可以使用filter
和includes
function findChildren(santasList, children) {
return children.sort().filter( s => santasList.includes( s ) );
}
<强>演示强>
function findChildren(santasList, children) {
return children.sort().filter( s => santasList.includes( s ) );
}
let santasList = ["Tom", "Errol", "Sam", "mistyMay", "Peter", "Jennifer",
"macMerphy"
];
let children = ["Errol", "Peter", "jennifer", "mistymay", "MacMerphy"];
console.log(findChildren(santasList, children));