有没有一种简单的方法可以在javascript中以编程方式创建二维数组?
我不想要的内容:
var array2D = [
[0,0,0],
[0,0,0],
[0,0,0]
]
答案 0 :(得分:18)
派对迟到了,但这篇帖子在Google搜索结果中依然很高。
@Override
public void configure(final WebSecurity web) throws Exception {
web.ignoring()
.antMatchers("/")
.antMatchers("/favicon.ico")
.antMatchers("/**.css")
.antMatchers("/webjars/**")
...
let array = Array(rows).fill().map(() => Array(columns));
E.g:
let array = Array(rows).fill().map(() => Array(columns).fill(0));
Array(2).fill().map(() => Array(3).fill(42));
// Result:
// [[42, 42, 42],
// [42, 42, 42]]
将导致所有行都是对同一个数组的引用!!
另一种可能的方法是使用Array(rows).fill(Array(columns))
来应用地图功能。
E.g:
Array.fill()
Array.from(Array(2), _ => Array(3).fill(43));
// Result:
// [[43, 43, 43],
// [43, 43, 43]]
- 方法似乎快了约70-80%。
你可以在这里查看:
答案 1 :(得分:11)
好吧,你可以写一个辅助函数:
function zeros(dimensions) {
var array = [];
for (var i = 0; i < dimensions[0]; ++i) {
array.push(dimensions.length == 1 ? 0 : zeros(dimensions.slice(1)));
}
return array;
}
> zeros([5, 3]);
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
奖励:处理任意数量的维度。
答案 2 :(得分:8)
function zero2D(rows, cols) {
var array = [], row = [];
while (cols--) row.push(0);
while (rows--) array.push(row.slice());
return array;
}
答案 3 :(得分:2)
您可以使用以下函数创建二维零数组:
const zeros = (m, n) => [...Array(m)].map(e => Array(n).fill(0));
console.log(zeros(3, 4));
// [ [ 0, 0, 0, 0 ],
// [ 0, 0, 0, 0 ],
// [ 0, 0, 0, 0 ] ]
答案 4 :(得分:0)
适合初学者的简单易懂的方法:
function twoDarrMaker(row, col) {
const twoDarr = [];
for (let i = 0; i < row; i++) {
let subarray = [];
for (let j = 0; j < col; j++) {
subarray.push(0);
}
twoDarr.push(subarray);
}
return twoDarr;
}
twoDarrMaker(3, 2);
// [
// [ 0, 0 ],
// [ 0, 0 ],
// [ 0, 0 ]
// ]