2016-09-30 82 views
0

你好傢伙我認爲下面的代碼應該可以工作,但它不會,我不知道爲什麼,有什麼建議?javascript輔音以小寫字母

它接收一個數字和字母的數組,並返回小寫的輔音。號碼不變 實施例:consonantstoLowerCase([1,5,7,'a','J','p','E'])返回[1,5,7,'a','j',p,'E']

function consonantstoLowerCase(array) 
 
{ 
 

 
\t var result = array.toString().replace(/[bcdfghjklmnpqrstvwxyz]/g, function (char) 
 
\t { 
 
\t  return char.toLowerCase(); 
 
\t }); 
 

 
\t console.log(result) 
 
\t 
 
}

OUTPUT:

consonantstoLowerCase([1,5,7,'a','J','p','E']) =>1,5,7,a,J,p,E

提前感謝!

+3

你只是在尋找你的REG EXP小寫。 'a'不匹配'A' – epascarello

+0

爲了使正則表達式不區分大小寫,在其中添加'i',例如:'/ [bcdfghjklmnpqrstvwxyz]/ig',但您只應查找大寫輔音,'/ [BCDFGHJKLMNPQRSTVWXYZ]/g' – Titus

+0

此外,您正在返回逗號分隔的字符串,而不是根據請求的數組。你需要再次使用'.split(「,」)',但是當你通過逗號時,這會中斷。如果項目是大寫字母,你應該使用'array.map()'並在那裏執行替換。 –

回答

0

consonantstoLowerCase([1,5,7,'a','J','p','E','k','m','I']) 
 
function consonantstoLowerCase(array) 
 
{ 
 

 
\t var result = array.toString().replace(/[bcdfghjklmnpqrstvwxyz]/ig, function (char) 
 
\t { 
 
\t  return char.toLowerCase(); 
 
\t }); 
 

 
\t console.log(result) 
 
\t 
 
}

+0

爲什麼投票下來給出正確答案的代碼?只需測試片段;) – Peter

0

爲了得到你想要的陣列,只映射值,檢查它們是否匹配輔音,如果是的話,返回他們toLowerCase()。 (還要注意匹配器上的i修飾符 - 現在我們也在檢查大寫字母,就像你想的那樣)。

啊,而且因爲它是LES寫,我檢查不匹配的歌聲和數字...

var input = [1,5,7,'a','J','p','E']; 
 

 
function consonantToLowerCase(arr) { 
 
    var vocals = /[aeiou0-9]/ig; 
 
    return arr.map(function(e) { 
 
    if (! e.toString().match(vocals)) return e.toLowerCase(); 
 
    return e; 
 
    }); 
 
} 
 

 
console.log(consonantToLowerCase(input));

0

這應做到:

var arr = [1,5,7,'a','J','p','E']; 
 
arr = arr.map(e => /[BCDFGHJKLMNPQRSTVWXYZ]/g.test(e) ? e.toLowerCase() : e); 
 
console.log(arr);

在回答您的意見,改變輔音字母爲小寫字母和元音爲大寫,你可以做這樣的事情:

var arr = [1,5,7,'a','J','p','E']; 
 
arr = arr.map(function(e){ 
 
    e = /[BCDFGHJKLMNPQRSTVWXYZ]/g.test(e) ? e.toLowerCase() : e; 
 
    e = /[aeiou]/g.test(e) ? e.toUpperCase() : e; 
 
    return e; 
 
}); 
 
console.log(arr);

+0

與您之前添加最終ig的答案有什麼區別: /[bcdfghjklmnpqrstvwxyz]/ig 我認爲它更幹,不是嗎? – Defoe

+0

@Defoe你只需要修改大寫輔音,所以沒有必要尋找小寫字母,因爲它們應該保持不變。另外,這個例子返回一個'Array'而不是'String'。 – Titus

+0

確實,那是練習的一部分。我自己做了元音部分,但整個練習是這樣的: //它接收一個包含數字和字母的數組,並返回大寫元音和小寫輔音。數字保持不變 \t //示例:beautifyLetters([1,5,7,'a','J','p','E'])返回[1,5,7,'A','j' ,p,'E'] 我該如何將它們結合在一起? – Defoe

相關問題