鍍金池/ 問答/HTML/ js字符串首字符無法用s[0]-32將小寫轉(zhuǎn)化為大寫?

js字符串首字符無法用s[0]-32將小寫轉(zhuǎn)化為大寫?

function normalize(arr) {arr = arr.map((x)=>x.toLowerCase());

arr = arr.map((x)=>{
    console.log(typeof x[0]);
    x[0] = x[0]-32;    //將首字符變大寫
    console.log(x[0]);

return x});
return arr;
                        }
normalize(['adam', 'LISA', 'barT']).toString();

clipboard.png

C里經(jīng)常用S[0] = S[0] +/- 32來轉(zhuǎn)換大小寫。
js似乎不行?

回答
編輯回答
卟乖

因為 JS 中 string 是基本數(shù)據(jù)類型,和 number/bool 一樣,雖然也提供了類數(shù)組的腳標訪問字符功能。基本數(shù)據(jù)類型意味著它是值引用,不像 C 語言那樣字符串是指針是一片內(nèi)存的首地址?;緮?shù)據(jù)類型是 immutable 的,其代表的數(shù)據(jù)是一個整體,要做更改只能重新賦值,而無法通過修改內(nèi)部直接完成。好比 C 語言對 int 型數(shù)據(jù)也能用位運算獲取某個比特位,但是要更新這個比特位,你只能對這個 int 型數(shù)據(jù)整體賦值。

2018年9月15日 12:02
編輯回答
互擼娃

應(yīng)該是32吧,js中的字符串不是字符數(shù)組

function normalize(arr) {
    arr = arr.map((x) => x.toLowerCase());
    arr = arr.map(x => String.fromCharCode(x.charCodeAt(0) & ~32) + x.substring(1));
    return arr;
}
2018年3月14日 15:38