Javascript και πολυδιάστατοι πίνακες


Αν προσπαθήσετε να βρείτε τρόπο να ορίσετε έναν πολυδιάσταστο πίνακα στη γλώσσα προγραμματισμού Javascript, η αλήθεια είναι πως θα απογοητευτείτε γιατί κάτι τέτοιο δεν υποστηρίζεται. Ψάχνοντας όμως στο internet για λύσεις του συγκεκριμένου προβλήματος, βρήκαμε αυτό το site. Μπορεί να μην υπάρχει τρόπος να ορίσουμε πολυδιάστατους πίνακες, αλλά τίποτα δε μας εμποδίζει να ορίσουμε πίνακες μέσα σε πίνακες. Έτσι, κώδικας όπως ο παρακάτω έχει νόημα:
<script language="JavaScript">
<!--
var x = new Array(new Array(1,2,3),new Array('A','B','C'),new Array('x','y','z'));
-->
</script>


και μάλιστα η τιμή x[1][2] θα επιστρέψει το C.

Σημείωση: Ας μην ξεχνάμε πως οι πίνακες ξεκινούν από το 0 οπότε και x[1] αφορά στον 2ο πίνακα, ενώ το x[1][2] στο 3ο στοιχείο του 2ου πίνακα.

Σαν βελτίωση της προηγούμενης μεθόδου, μπορούμε να κατασκευάσουμε μία function για δημιουργία "πολυδιάστατου" πίνακα με τις όποιες διαστάσεις επιθυμούμε. Για να δημιουργήσουμε λοιπόν έναν 2-διάστατο και έναν 4-διάστατο πίνακα θα έχουμε τις παρακάτω συνάρτησεις αντίστοιχα:
<script language="JavaScript">
<!--
function create2DArray(d1,d2){
var lineTxt="5";
var x = new Array(d1);
for (var i=0;i<d1;i++){
x[i]=new Array(d2);
}
}
</script>


και

<script language="JavaScript">
<!--
function create4DArray(d1,d2,d3,d4){
var lineTxt="5";
var x = new Array(d1);
for (var i=0;i<d1;i++){
x[i]=new Array(d2);
}
for(var i=0;i<d1;i++){
for (var j=0;j<d2;j++){
x[i][j]=new Array(d3);
}
}
for(var i=0;i<d1;i++){
for (var j=0;j<d2;j++){
for (var j=0;j<d3;j++){
x[i][j]=new Array(d4);
}
}
}
}
</script>


Σε επόμενη ίσως ανάρτηση, πιθανόν να παρουσιάσουμε μία αναδρομική συνάρτηση που θα φτιάχνει όσων διαστάσεων πίνακα επιθυμούμε. Όμως, στην περίπτωση που δε θέλουμε να χρησιμοποιήσουμε τους παραπάνω τρόπους, μπορούμε να κάνουμε ένα μικρό τρικ ορίζοντας έναν δυναμικό πίνακα και έπειτα ορίζοντας πεδία με ονόματα χαρακτήρων να ορίσουμε έναν ψευτο-πολυδιάστατο πίνακα.
<script language="JavaScript">
<!--
var myArray = new Array();
myArray['00'] = 1;
myArray['01'] = 2;
myArray['02'] = 3;
myArray['10'] = 'A';
myArray['11'] = 'B';
myArray['12'] = 'C';
myArray['20'] = 'x';
myArray['21'] = 'y';
myArray['22'] = 'z';
</script>


από όπου η τιμή myArray['1' + '2'] θα επιστρέψει C.

Comments

Popular Posts