function str_split ( f_string, f_split_length, f_backwards ){ // Convert a string to an array
//
// + original by: Martijn Wieringa
if(f_backwards == undefined) {
f_backwards = false;
}
if(f_split_length > 0){
var result = new Array();
if(f_backwards) {
var r = (f_string.length % f_split_length);
if(r > 0){
result[result.length] = f_string.substring(0, r);
f_string = f_string.substring(r);
}
}
while(f_string.length > f_split_length) {
result[result.length] = f_string.substring(0, f_split_length);
f_string = f_string.substring(f_split_length);
}
result[result.length] = f_string;
return result;
}
return false;
}
/* упрощённый вариант */ function str_split ( str, len ) { str = str.split(''); if ( !len ) { return str; } var r = []; for( var k=0;k<(str.length/len); k++ ) { r[k] = ''; } for( var k in str ) { r[ Math.floor(k/len) ] += str[k]; } return r; };Не надо так делать. В перечисление попадут лишние свойства.
[String str]
str = str.split('');
...var k in str
--
Подскажите, какие лишние свойства могут попасть?
Например, при расширении прототипа.
Array.prototype.uselessMethod = function(){ return true; }; /* ... */ var str = 'test', data = str.split(''), key, keys = []; for(key in data) keys.push(key); alert(keys.join('\n'))Мои 5 копеек.
Акцентировал внимание на читабельности и простоте. Так же сделал, чтобы функция при любых аргументах возвращала массив (для моих целей так удобнее)
function str_split(value, chunkSize) { if (value.length === 0) return []; else if (chunkSize <= 0) return [value]; var result = []; var startIndex = 0, i = -1, loops = Math.ceil(value.length / chunkSize); while (++i < loops) { result.push(value.slice(startIndex, startIndex + chunkSize)); startIndex += chunkSize; } return result; } alert(str_split('Hello Friend', 3));function str_split(f_string, f_split_length) { return f_string.match(new RegExp("[^]{" + parseInt(f_split_length || "1", 10) + "}", "g")); }Мда...