2009-10-07 12 views
5

Jestem stosunkowo nowy w programowaniu i zastanawiałem się, w jaki sposób przekonwertować tablicy:Przekształcanie tablicę na ciąg znaków w AS3

[[0,0,0,0,0,0], 
[1,1,1,1,1,1], 
[2,2,2,2,2,2], 
[3,3,3,3,3,3], 
[4,4,4,4,4,4], 
[5,5,5,5,5,5]]; 

w ciąg indeksów przecinkiem i line-zwrotnych wytyczone, takich jak:

"0,0,0,0,0,0 
1,1,1,1,1,1 
2,2,2,2,2,2 
3,3,3,3,3,3 
4,4,4,4,4,4 
5,5,5,5,5,5" 

z funkcją dynamiczną? Szukałem funkcji implode(), ale nie mogłem nic znaleźć. Z góry dziękuję!

Odpowiedz

9
private function joinArrays(array:Array):String 
{ 
    var result:String = ""; 
    for each(var a:Array in array) 
    { 
     result += a.join() + "\n"; 
    } 
    return result; 
} 

Lub jeśli nie chcesz przerwę linii po ostatnim wierszu:

var result:String = ""; 
var length:Number = array.length; 
for(var i:Number = 0; i < length; i++) 
{ 
    result += array[i].join(); 
    if(i != length - 1) 
     result += "\n"; 
} 
return result; 
+0

Dzięki pracował cudownie! Łatwe do zrozumienia. –

+2

Domyślny znak łączenia, gdy 'toString()' jest wywoływany, to ',' abyś mógł całkowicie wyciąć 'for' i po prostu użyć' trace (array.join ("\ n")); 'to rozwiązałoby również Twój problem z przerwą w linii końcowej – enzuguri

1
function join_arr(arr) { 
    var newarr = []; 
    for (var i = 0; i < arr.length; i++) { 
     newarr.push(arr[i].join(",")); 
    } 
    return newarr.join("\n"); 
} 

nie testowałem go ale powinno działać :)

4

Prosty .ToString() wykona zadanie!

var a:Array=[[0,0,0,0,0,0],[1,1,1,1,1,1],[2,2,2,2,2,2],[3,3,3,3,3,3],[4,4,4,4,4,4],[5,5,5,5,5,5]]; 
trace(">",a.toString()); 
//> 0,0,0,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4,5,5,5,5,5,5 

EDIT: Jak często RegExp uratuje swoją duszę:)

var a:Array=[[0,0,0,0,0,0],[1,1,1,1,1,1],[2,2,2,2,2,2],[3,3,3,3,3,3],[4,4,4,4,4,4],[5,5,5,5,5,5]]; 
var columns:int=11;//columns count 
trace(a.toString().replace(new RegExp("(.{"+columns+"})(,?)","g"),"$1\n")); 
//output : 
//0,0,0,0,0,0 
//1,1,1,1,1,1 
//2,2,2,2,2,2 
//3,3,3,3,3,3 
//4,4,4,4,4,4 
//5,5,5,5,5,5 
+0

nie widział "wskazywanych przez linię wskaźników" przepraszam !! ;) – OXMO456

Powiązane problemy