Array multidimensionale di JavaScript

Qualcuno può darmi un esempio / esempio di JavaScript con una serie di input multidimensionale? Spero che tu possa aiutare perché sono ancora nuovo in JavaScript.

Come quando si inseriscono 2 righe e 2 colonne, l’output di esso sarà di 2 righe di input e 2 colonne di input.

Come questo:

[input][input] [input][input] 

 var numeric = [ ['input1','input2'], ['input3','input4'] ]; numeric[0][0] == 'input1'; numeric[0][1] == 'input2'; numeric[1][0] == 'input3'; numeric[1][1] == 'input4'; var obj = { 'row1' : { 'key1' : 'input1', 'key2' : 'input2' }, 'row2' : { 'key3' : 'input3', 'key4' : 'input4' } }; obj.row1.key1 == 'input1'; obj.row1.key2 == 'input2'; obj.row2.key1 == 'input3'; obj.row2.key2 == 'input4'; var mixed = { 'row1' : ['input1', 'inpu2'], 'row2' : ['input3', 'input4'] }; mixed.row1[0] == 'input1'; mixed.row1[1] == 'input2'; mixed.row2[0] == 'input3'; mixed.row2[1] == 'input4'; 

http://jsfiddle.net/z4Un3/

E se vuoi memorizzare elementi DOM:

 var inputs = [ [ document.createElement('input'), document.createElement('input') ], [ document.createElement('input'), document.createElement('input') ] ]; inputs[0][0].id = 'input1'; inputs[0][1].id = 'input2'; inputs[1][0].id = 'input3'; inputs[1][1].id = 'input4'; 

Non sono sicuro di quanto sia utile quanto sopra fino a quando non si allegano gli elementi. Il seguente potrebbe essere più quello che stai cercando:

     var els = [ [ document.getElementById('input5'), document.getElementById('input6') ], [ document.getElementById('input7'), document.getElementById('input8') ] ]; els[0][0].id = 'input5'; els[0][1].id = 'input6'; els[1][0].id = 'input7'; els[1][1].id = 'input8'; 

http://jsfiddle.net/z4Un3/3/

O forse questo:

   
var els = [ [ document.getElementById('input5'), document.getElementById('input6') ], [ document.getElementById('input7'), document.getElementById('input8') ] ]; var result = []; for (var i = 0; i < els.length; i++) { result[result.length] = els[0][i].value - els[1][i].value; }

Che dà:

 [2, 0] 

Nella console. Se vuoi result.join(' '); in testo, puoi result.join(' '); , che ti darebbe 2 0 .

http://jsfiddle.net/z4Un3/6/

MODIFICARE

E una dimostrazione di lavoro:

   

// This would just go in a script block in the head function add() { var els = [ [ document.getElementById('input5'), document.getElementById('input6') ], [ document.getElementById('input7'), document.getElementById('input8') ] ]; var result = []; for (var i = 0; i < els.length; i++) { result[result.length] = parseInt(els[0][i].value) - parseInt(els[1][i].value); } alert(result.join(' ')); }

http://jsfiddle.net/z4Un3/8/

Citazione tratta da strutture dati e algoritmi con JavaScript

The Good Parts (O’Reilly, p 64). Crockford estende l’object array JavaScript con una funzione che imposta il numero di righe e colonne e imposta ciascun valore su un valore passato alla funzione. Ecco la sua definizione:

 Array.matrix = function(numrows, numcols, initial) { var arr = []; for (var i = 0; i < numrows; ++i) { var columns = []; for (var j = 0; j < numcols; ++j) { columns[j] = initial; } arr[i] = columns; } return arr; } 

Ecco un codice per testare la definizione:

 var nums = Array.matrix(5,5,0); print(nums[1][1]); // displays 0 var names = Array.matrix(3,3,""); names[1][2] = "Joe"; print(names[1][2]); // display "Joe" 

Possiamo anche creare una matrice bidimensionale e inizializzarla su un insieme di valori in una riga:

 var grades = [[89, 77, 78],[76, 82, 81],[91, 94, 89]]; print(grades[2][2]); // displays 89 

Dichiarato senza assegnazione di valore.

2 dimensioni …

 var arrayName = new Array(new Array()); 

3 dimensioni …

 var arrayName = new Array(new Array(new Array())); 

So che è antico ma che dire …

Esempio 4×4 (actually 4x) :

 var matrix = [ [],[],[],[] ] 

che può essere riempito da:

 for (var i=0; i<4; i++) { for (var j=0; j<4; j++) { matrix[i][j] = i*j; } } 

molto semplice

 var states = [,]; states[0,0] = tName; states[0,1] = '1'; states[1,0] = tName; states[2,1] = '1'; 

. . .

 states[n,0] = tName; states[n,1] = '1'; 
 function Array2D(x, y) { var array2D = new Array(x); for(var i = 0; i < array2D.length; i++) { array2D[i] = new Array(y); } return array2D; } var myNewArray = Array2D(4, 9); myNewArray[3][5] = "booger"; 

Spero che il codice seguente soddisfi le tue esigenze

 var row= 20; var column= 10; var f = new Array(); for (i=0;i 
 var size = 0; var darray = new Array(); function createTable(){ darray[size] = new Array(); darray[size][0] = $("#chqdate").val(); darray[size][1]= $("#chqNo").val(); darray[size][2] = $("#chqNarration").val() ; darray[size][3]= $("#chqAmount").val(); darray[size][4]= $("#chqMode").val(); } 

aumentare le dimensioni var dopo la funzione.

puoi creare array seguire il codice qui sotto:

 var arraymultidimensional = [] arraymultidimensional = [[value1,value2],[value3,value4],[value5,value6]]; 

Risultato:
[v1] [v2] posizione 0
[v3] [v4] posizione 1
[v5] [v6] posizione 2

Per aggiungere dynamicmente alla matrice, utilizzare il metodo seguente:

 //vectorvalue format = "[value,value,...]" function addToArray(vectorvalue){ arraymultidimensional[arraymultidimensional.length] = vectorvalue; } 

Spero che questo ti aiuti. 🙂

Quindi ecco la mia soluzione.

Un semplice esempio per un array 3×3. Puoi continuare a incatenare questo per andare più a fondo

 Array(3).fill().map(a => Array(3)) 

Oppure la seguente funzione genererà qualsiasi livello di profondità che ti piace

 f = arr => { let str = 'return ', l = arr.length; arr.forEach((v, i) => { str += i < l-1 ? `Array(${v}).fill().map(a => ` : `Array(${v}` + ')'.repeat(l); }); return Function(str)(); } f([4,5,6]) // Generates a 4x5x6 Array 

http://www.binaryoverdose.com/2017/02/07/Generating-Multidimensional-Arrays-in-JavaScript/

Ho creato un modulo npm per fare questo con una certa flessibilità:

 // create a 3x3 array var twodimensional = new MultiDimensional([3, 3]) // create a 3x3x4 array var threedimensional = new MultiDimensional([3, 3, 4]) // create a 4x3x4x2 array var fourdimensional = new MultiDimensional([4, 3, 4, 2]) // etc... 

Puoi anche inizializzare le posizioni con qualsiasi valore:

 // create a 3x4 array with all positions set to 0 var twodimensional = new MultiDimensional([3, 4], 0) // create a 3x3x4 array with all positions set to 'Default String' var threedimensionalAsStrings = new MultiDimensional([3, 3, 4], 'Default String') 

O più avanzato:

 // create a 3x3x4 array with all positions set to a unique self-aware objects. var threedimensional = new MultiDimensional([3, 3, 4], function(position, multidimensional) { return { mydescription: 'I am a cell at position ' + position.join(), myposition: position, myparent: multidimensional } }) 

Ottieni e imposta valori alle posizioni:

 // get value threedimensional.position([2, 2, 2]) // set value threedimensional.position([2, 2, 2], 'New Value') 

Ne ho scritto uno lineare per questo:

 [1, 3, 1, 4, 1].reduceRight((x, y) => new Array(y).fill().map(() => JSON.parse(JSON.stringify(x))), 0); 

Sento comunque che posso dedicare più tempo a creare una versione di JSON.parse(JSON.stringify()) che è utilizzata per la clonazione qui.

A proposito, dai un’occhiata alla mia altra risposta qui .

So che questa è una vecchia domanda, ma qui c’è qualcosa da provare: crea il tuo array multidimensionale e posizionalo all’interno di un tag html. In questo modo puoi mirare precisamente all’input del tuo array:

 //Your Holding tag for your inputs! 

È semplicemente un modo più ordinato per scrivere il tuo codice e più facile da invocare. Puoi controllare la mia demo qui!