[英]Javascript: String comparison for inside character issue
這里的小問題。 我在下面有這個挑戰。
聖誕節快到了,聖誕老人還有很長的路要走,以找出誰值得當大禮物。 瀏覽孩子列表,然后返回一個列表,其中包含出現在聖誕老人列表中的每個孩子。 請勿多次添加任何孩子。 輸出應排序。
比較應該區分大小寫,並且返回的列表僅返回每個名稱的一個副本。 允許使用“ Sam”和“ 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);
這打印; 埃羅爾·彼得·詹妮弗·莫西梅·麥克默菲
但是我認為它應該打印; Errol Peter詹妮弗·麥克默菲?
解決方法在哪里?
是因為
if (child.toLowerCase() === s.toLowerCase()) {
比較是以不區分大小寫的方式進行的 。
另外,您可以使用filter
進一步改善您的代碼( 當前使用O(N ^ 3) ),並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));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.