2016-03-13 25 views
1

提前感謝您花時間閱讀。我是一個初學者,我知道這聽起來可能是「幫助我理解這些」問題中的一個,但如果是這樣的話,我很抱歉,我會盡力確保儘可能具體。如何在JavaScript中將字符串的字母切成更小的固定長度塊?

基本上我需要創建一個函數來將字符串轉換爲輸入長度較小的字符串,我嘗試過使用數組方法,但出於某種原因,我一直得到一個空數組。所以,如果輸入字符串是「地獄」和輸入長度爲2輸出將是[「他」,「ll]

此外,在與這個問題相關,我想知道如果你可以設置爲。循環條件x.length < = 0

這裏是我的代碼:

function chop(a, b) { 
    // a = "hell" 
    // b = 2 

    var ans = []; 
    var x = a.split(""); // [h,e,l,l] 

    for (var i = 0; i<=(x.length/b); i++) { 
     // condition i<=2 
     // I was also wondering how can set the condition to be x.length <= 0 

     x = x.slice(0,(b-1)); // x = "he" 
     ans.push(x); // ans = ["he", ] 
     x = x.splice(0,b); // x = [l,l] 

    } 

    console.log(ans); 

} 
+1

請付出一些努力,很好地格式化您的代碼。謝謝。 –

+0

是啊我想這就是爲什麼我一直在我的問題上得到低估,請讓我知道我該如何做得更好? 我想你已經讀過我是一個初學者,我也是新來的stackoverflow,所以我將不勝感激任何意見 –

回答

2

你可以這樣說:

function chop(a, b) { 

    var ans = []; 

    for (var i = 0; i < a.length; i += b) { 
    ans.push(a.substring(i, i + b)); 
    } 
    console.log(ans); 
} 

chop("hello", 2); //logs ["he", "ll", "o"] 
+0

非常感謝 –

+0

我只是不明白爲什麼有我+ = B不是我在++循環? –

+0

第一個'iteration'是'i = 0''.substring(0,2)',second =>'我現在是0 + 2(b)= 2'和'a.substring(2,4)'' ,第三個=>'現在是2 + 2(b)= 4','a.substring(4,6)',第四個=>'我現在是4 + 2(b)','a.substring(6 ,8)'..等等 –

2

,如果你使用正則表達式很簡單:

"hello".match(/.{1,2}/g) || []; // ["he", "ll", "o"] 

但是,如果你不事先知道第二個參數的值,這是一個有點髒:

function chop(a, b) { 
    return a.match(new RegExp('.{1,'+b+'}','g')) || []; 
} 
chop("hello", 2); // ["he", "ll", "o"] 

在這種情況下,這將是前消毒b一個好主意將它插入正則表達式中。

+0

非常感謝你Oriol –

相關問題