如何创建多维数组

IT技术 javascript multidimensional-array
2021-01-11 09:42:43

谁能给我一个带有多维输入数组的 JavaScript 示例/示例?希望你能帮上忙,因为我还是 JavaScript 的新手。

就像当您输入 2 行 2 列时,它的输出将是 2 行输入和 2 列输入。

像这样:

[input][input]                
[input][input]
6个回答
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/

如果你想存储 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';

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

或者,也许是这样的:

<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.

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

编辑

和一个工作演示:

<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(' '));
}

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

关于它就像我要制作一个 HTML 文件,其中有两个输入,它是 Rows 和 Columns 的输入还是其他什么?
2021-03-19 09:42:43
我能知道这是如何工作的吗先生..我对 Javascript 有点困惑
2021-03-21 09:42:43
你有什么困惑?
2021-03-23 09:42:43
我并没有真正按照你说的去做。你想用你的阵列做什么?(另外,请参阅我的最后一次编辑。)
2021-03-26 09:42:43
在数组中,我将输入具有唯一名称或 ID 的许多行和列……以及具有唯一名称或 ID 的另一行和列,其中第一个输入行和列数组将被减去 R 的第二个输入和 C..
2021-03-30 09:42:43

引自数据结构和算法与 JavaScript

好的部分(O'Reilly,第 64 页)。Crockford 使用一个函数扩展了 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

未赋值的声明。

2维...

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

3维...

var arrayName = new Array(new Array(new Array()));
这两个示例似乎都只生成 1x1 和 1x1x1 数组(分别),也许可以正确地称为单维嵌套数组。作为示例var test=new Array(new Array());test[0][0]='1';test[0][1]='2';test[1][0]='3';错误消息Exception: test[1] is undefined
2021-03-29 09:42:43
这似乎是错误的。当我尝试代码时,我得到一个 1x1x0 数组。jsfiddle.net/zU8SB/1它是如何获得 13 票的?
2021-04-02 09:42:43
使用'Array.push'插入
2021-04-02 09:42:43

我知道这是古老的,但那又如何……

4x4 示例(actually 4x<anything>)

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

可以填写:

for (var i=0; i<4; i++) {
   for (var j=0; j<4; j++) {
      matrix[i][j] = i*j;
   }
}
也许可能会更明显地表明,使用此 var 声明声明(即,可访问)1x4 之外的任何内容(因此不是 matrix[3][3] 是第 4 行、第 4 列)。此外,示例设置元素 [0][1] 到 5 跳过了第一个元素。改用 [0][0] 可能有助于在许多编程语言中演示数组的一个重要点。
2021-03-25 09:42:43

希望以下代码符合您的要求

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;
 }
}
是的!!一直在为此苦苦挣扎!秘诀是在行列创建额外的数组(或者如果遍历网格,则为高度)
2021-03-29 09:42:43