Может ли кто-нибудь дать мне пример/пример JavaScript с многомерным массивом входов? Надеюсь, вы сможете помочь, потому что я все еще новичок в JavaScript.
Например, когда вы вводите 2 строки и 2 столбца, то на выходе будет 2 строки ввода и 2 столбца ввода.
Например:
[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';
И если вы'хотите хранить элементы 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';
Не совсем уверен, насколько полезен вышеприведенный вариант, пока вы не присоедините элементы. Возможно, нижеприведенный вариант - это то, что вам нужно:
<input text="text" id="input5"/>
<input text="text" id="input6"/>
<input text="text" id="input7"/>
<input text="text" id="input8"/>
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';
Или, может быть, вот это:
<input text="text" value="4" id="input5"/>
<input text="text" value="4" id="input6"/>
<br/>
<input text="text" value="2" id="input7"/>
<input text="text" value="4" id="input8"/>
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;
}
Что дает:
[2, 0]
В консоли. Если вы хотите вывести это в текст, вы можете result.join(' ');
, что даст вам 2 0
.
EDIT
И рабочая демонстрация:
<input text="text" value="4" id="input5"/>
<input text="text" value="4" id="input6"/>
<br/>
<input text="text" value="2" id="input7"/>
<input text="text" value="4" id="input8"/>
<br/>
<input type="button" value="Add" onclick="add()"/>
// 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(' '));
}
Цитата взята из [структуры данных и алгоритмы работы с JavaScript ][1]
хорошие части (О'Рейли, С. 64). Крокфорд распространяется на JavaScript массив объект с функцией, которая задает количество строк и столбцов > и устанавливает каждое значение на значение, переданное в функцию. Вот его определение:
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;
}
Вот некоторый код, чтобы проверить определение:
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"
Мы также можем создать двумерный массив и инициализировать его на набор значений в одну строку:
var grades = [[89, 77, 78],[76, 82, 81],[91, 94, 89]];
print(grades[2][2]); // displays 89
[1]: http://www.amazon.com/Structures-Algorithms-JavaScript-Michael-McMillan-ebook/dp/B00IV3J23Y/ref=sr_1_2?ie=UTF8&=1430838762& qid;sr=8-2&keywords=javascript%20data%20structures%20and%20algorithms
Я знаю, что это древний, но как насчет...
4х4 примере(фактически 4х<ничего>)`:
var matrix = [ [],[],[],[] ]
которая может заполняться:
for (var i=0; i<4; i++) {
for (var j=0; j<4; j++) {
matrix[i][j] = i*j;
}
}
очень удобно
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';
Надеюсь, что следующие костюмы код ваше требование
var row= 20;
var column= 10;
var f = new Array();
for (i=0;i<row;i++) {
f[i]=new Array();
for (j=0;j<column;j++) {
f[i][j]=0;
}
}
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();
}
увеличить размер var после вашей функции.
вы можете создать массив с помощью кода ниже:
var arraymultidimensional = []
arraymultidimensional = [[value1,value2],[value3,value4],[value5,value6]];
Результат: <БР> [В1][В2] положение 0 <БР> [В3][В4] положение 1 <БР> [У5][В6] положение 2
Для добавления в массив динамически, используйте метод, приведенный ниже:
//vectorvalue format = "[value,value,...]"
function addToArray(vectorvalue){
arraymultidimensional[arraymultidimensional.length] = vectorvalue;
}
Надеюсь, что это помогает. :)
Так вот'с моим решением.
Простой пример для массива 3х3. Вы можете приковывайте это глубже
Array(3).fill().map(a => Array(3))
Или следующая функция будет генерировать любого уровня глубоко вам нравится
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/
Я'вэ создал НПМ модуль для этого с некоторыми дополнительными гибкость:
// 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...
Вы также можете инициализировать позиции с любым значением:
// 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')
Или более продвинутый:
// 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
}
})
Получать и устанавливать значения по позициям:
// get value
threedimensional.position([2, 2, 2])
// set value
threedimensional.position([2, 2, 2], 'New Value')
Я'вэ написано одним линейным для этого:
[1, 3, 1, 4, 1].reduceRight((x, y) => new Array(y).fill().map(() => JSON.parse(JSON.stringify(x))), 0);
Однако я чувствую, что я могу потратить больше времени, чтобы сделать формат JSON.разобрать(в формате JSON.преобразовать в строки())
-бесплатная версия, которая используется для клонирование здесь.
Кстати, взгляните на мой другой ответ здесь.
Я знаю, это старый вопрос, но вот что попробовать: Сделайте свой многомерный массив, и поместите его внутри HTML-тега. Таким образом, Вы сможете точно прицеливаться, массив'd вход:
//Your Holding tag for your inputs!
<div id='input-container' class='funky'></div>
<script>
//With VAR: you can seperate each variable with a comma instead of:
//creating var at the beginning and a semicolon at the end.
//Creates a cleaner layout of your variables
var
arr=[['input1-1','input1-2'],['input2-1','input2-2']],
//globall calls these letters var so you dont have to recreate variable below
i,j
;
//Instead of the general 'i<array.length' you can go even further
//by creating array[i] in place of 'i<array.length'
for(i=0;arr[i];i++){
for(j=0;arr[i][j];j++){
document.getElementById('input-container').innerHTML+=
"<input class='inner-funky'>"+arr[i][j]+"</input>"
;
}}
</script>
Его просто аккуратнее способ, чтобы написать код и легче вызвать. Вы можете проверить мои демо [здесь!][1]