iT邦幫忙

0

JS For取值問題

  • 分享至 

  • xImage

題目為字串反轉
'world' => 'dlrow'
'word' => 'drow'

function solution(str){
 let result = ''; //設一空字串變數
  
//設定for迴圈並且變數i為str字串長度,遞減印出各陣列字串
  
  for(let i = str.length; i>=1;i--){
  result = result + str[i-1];
}
return result;

}

正確答案是這樣,不過有疑問的地方是i=str.length為什麼可以直接取得字串值呢?
如果arry輸入一個world不是應該存放一個world在陣列0中嗎

nord001 iT邦新手 5 級 ‧ 2022-08-29 14:47:59 檢舉
自問自答..我已找到答案了
janlin002 iT邦好手 1 級 ‧ 2022-08-29 16:18:50 檢舉
原因是因為他是i--嗎?(確認一下我的想法是對的)
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

2
淺水員
iT邦大師 6 級 ‧ 2022-08-29 15:16:00
最佳解答

方式很多
另外可以注意一下 unicode 超過 0xffff 的狀況

//原本寫法
function solution(str) {
    let result = ''; //設一空字串變數

    //設定for迴圈並且變數i為str字串長度,遞減印出各陣列字串

    for (let i = str.length; i >= 1; i--) {
        result = result + str[i - 1];
    }
    return result;

}

//另解1
function sol_1(str) {
    //類似 solution 但是改一下迴圈的方式
    let result = '';
    for (let i = str.length; i > 0;) {
        result += str[--i];
    }
    return result;
}

//另解2
function sol_2(str) {
    //用 for ... of
    let result = '';
    for (let c of str) {
        result = c + result;
    }
    return result;
}

//另解3
function sol_3(str) {
    //利用 Array 處理
    return Array.from(str).reverse().join('');
}

//==== 測試 ====
function test(str) {
    console.log(`原字串: ${str}`);
    console.log(`solution: ${solution(str)}`);
    console.log(`sol_1: ${sol_1(str)}`);
    console.log(`sol_2: ${sol_2(str)}`);
    console.log(`sol_3: ${sol_3(str)}`);
    
}
test('測試Test'); //一般字串
test('?Db、?Sg、?Bh、?Hs'); //unicode 超過 0xffff

第二個測試的文字如下圖,這邊好像貼不出來
https://ithelp.ithome.com.tw/upload/images/20220829/20112943FrBSQWLRX3.png

執行結果
https://ithelp.ithome.com.tw/upload/images/20220829/20112943aE3NlDWTxY.png

nord001 iT邦新手 5 級 ‧ 2022-08-29 17:53:02 檢舉

謝謝解答

淺水員 iT邦大師 6 級 ‧ 2022-08-29 17:55:11 檢舉

str[0]、str[1]、str[2]、str[3] 就4個字了
如果你字串只有4個字
那 str[4] 就沒東西了

nord001 iT邦新手 5 級 ‧ 2022-08-29 18:01:34 檢舉

剛剛開竅,因為帶入的值是字串長度,可是陣列是0開始計算,想了好久原來卡在這邊!

我要發表回答

立即登入回答