如果我有一系列的字母:如何製作字母組列表?
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,ü,ß等
如果我有一系列的字母:如何製作字母組列表?
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,ü,ß等
我可以建議一個基本的「神奇功能」的解決方案。我希望你能多發佈一些你已經嘗試過的東西,或者至少對解決方案有一些思考方向。我也不清楚這些特殊字符應該如何工作,比如說,它們是否應該包含在正常字母表中?
無論如何,我的建議是創建一個包含字母表的所有字母的數組,包括特殊字母,您需要/需要它們。然後,遍歷「字母序列」數組(稱爲test
),並對其中的每個字符進行迭代,檢查alphabet
數組中的索引是否在test
數組中的字符索引之後。如果沒有,您可以將它推入另一個陣列的新空間(稱爲grouped
)。
如果(如,如果字符來在兩個alphabet
和test
同前一個元素後),你做的另一項檢查,看是否字符它後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
這是什麼輸出背後的邏輯是什麼? – renakre
我需要爲我正在做的一個項目做這個 –
好,但是決定如何分組這些字母。第一組是2個字符,第二個4,然後是2,然後是1.什麼控制這個? –