我需要编写一个带有两个参数的函数-行和列。此函数的目的是返回具有给定数字和行的2d数组。我需要通过使用函数返回数组。这是一个代码:
我是一个初学者,我们将非常感谢您的反馈。 :-)
我已经检查了StackOverflow,我尝试过用Google搜索它,检查了合适的网站-不幸的是,没有运气
function create2Darray(A) {
var columns = [];
var rows = Math.sqrt(A.length);
for (var i = 0; i < rows; i++) {
columns[i] = [];
for (var j = 0; j < rows; j++) {
columns[i][j] = A[i * rows + j];
}
}
return columns;
}
答案 0 :(得分:1)
您可以将Array.from
与具有长度的对象一起使用,并与第二个参数映射为内部数组。
const
getArray = (l, w) => Array.from({ length: l }, (_, i) =>
Array.from({ length: w }, (_, j) => i * w + j));
console.log(getArray(3, 2));
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 1 :(得分:0)
您的问题陈述与您尝试的代码不匹配。看来您想将一维数组转换为2D数组。您的代码很好。但是问题是 Math.sqrt(A.length);
可能返回float,而i * rows + j
将变为float,而数组没有float索引。只需使用Math.ceil()
即可解决
function create2Darray(A) {
var columns = [];
var rows = Math.ceil(Math.sqrt(A.length));
for (var i = 0; i < rows; i++) {
columns[i] = [];
for (var j = 0; j < rows; j++) {
columns[i][j] = A[i * rows + j];
}
}
return columns;
}
console.log(create2Darray([1,2,3,4,5,6,7,8]))
以下两种解决方案适用于需要长度和宽度的函数。
function array(l,w){
let res = [];
for(let i = 0; i < l;i++){
res[i] = [];
for(let j = 0; j < w; j++){
res[i][j] = (w * i) + j
}
}
return res;
}
console.log(JSON.strigify(array(3,2)))
可以使用嵌套的map()
const array = (l,w) => [...Array(l)].map((x,i) => [...Array(w)].map((x,j) => (i*w) + j))
console.log(JSON.stringify(array(3,2)))