簡體   English   中英

Javascript:內部字符問題的字符串比較

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM