2015-05-05 57 views
-3

如果我有一系列的字母:如何製作字母組列表?

a, b, d, e, f, g, h, i, l, u, ü 

我怎麼可以讓他們分組,量程,所以someMagicFunction('A,B,d,E,F,G,H,I,L,U, ü')

回報是這樣的:

[ 
    "a-b" 
    "d-g" 
    "h-i" 
    "l", 
    "u-ü" 
] 

這是容易做到的?

注:也可能有字符,如:O,A,ü,ß等

+3

這是什麼輸出背後的邏輯是什麼? – renakre

+0

我需要爲我正在做的一個項目做這個 –

+1

好,但是決定如何分組這些字母。第一組是2個字符,第二個4,然後是2,然後是1.什麼控制這個? –

回答

0

我可以建議一個基本的「神奇功能」的解決方案。我希望你能多發佈一些你已經嘗試過的東西,或者至少對解決方案有一些思考方向。我也不清楚這些特殊字符應該如何工作,比如說,它們是否應該包含在正常字母表中?

無論如何,我的建議是創建一個包含字母表的所有字母的數組,包括特殊字母,您需要/需要它們。然後,遍歷「字母序列」數組(稱爲test),並對其中的每個字符進行迭代,檢查alphabet數組中的索引是否在test數組中的字符索引之後。如果沒有,您可以將它推入另一個陣列的新空間(稱爲grouped)。

如果(如,如果字符來在兩個alphabettest同前一個元素後),你做的另一項檢查,看是否字符它後test陣列中還附帶後在alphabet數組。如果是這樣,這意味着您可以繼續循環的下一個迭代test,否則,這意味着test中的下一個字符將是不連續的字符,因此您可以將您推入grouped的最後一個字符串更改爲包含"-"+test[i]

function someMagicFunction(test){ 
    var alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o", "ö","p","q","r","s","t","u","ü","v","w","x","y","z"]; 
    var grouped = []; 

    for(var i=0; i<test.length; i++){ 
     if (grouped.length && alphabet.indexOf(test[i]) - alphabet.indexOf(test[i-1])==1){ 
      if(alphabet.indexOf(test[i+1])-alphabet.indexOf(test[i])==1) 
       continue; 
      else grouped[grouped.length-1] += "-"+test[i]; 
     } 
     else 
      grouped.push(test[i]); 
    } 
    return grouped; 
} 

var series = ["a", "b", "d", "e", "f", "g", "h", "i", "l", "u", "ü"]; 
console.log(someMagicFunction(series)); 

您可以查看JSBin結果:http://jsbin.com/kigozelaji/1/edit?js,console

相關問題