我正在尝试创建一个3*3*3矩阵,其中每个元素将包含一个立方体。目前,所有的立方体都在一个1D矩阵all_cube中。但我需要在matrix cube[][][]中创建相同的。
请查看以下代码进行详细解释:
function createCubie()
{
all_cube=[];
for(var i= -1;i<=1;i++)
{
for(var j= -1;j<=1;j++)
{
for(var k= -1;k<=1;k++)
{
var cube = new THREE.Mesh( geometry, material );
cube.translateX(i*5.5);
cube.translateY(j*5.5);
cube.translateZ(k*5.5);
scene.add( cube );
all_cube.push(cube);
}
}
}
}发布于 2020-05-13 12:35:02
您需要在每个级别创建一个数组,并将其从上一级别推送到数组中。
function createCubie()
{
const all_cube=[];
for(let i= -1;i<=1;i++)
{
const plane = [];
all_cube.push(plane);
for(let j= -1;j<=1;j++)
{
const row = [];
plane.push(row);
for(let k= -1;k<=1;k++)
{
const cube = new THREE.Mesh( geometry, material );
cube.translateX(i*5.5);
cube.translateY(j*5.5);
cube.translateZ(k*5.5);
scene.add( cube );
row.push(cube);
}
}
}
return all_cube;
}
// ---- ignore below this line ----
// something so the code runs
const geometry = 0;
const material = 0;
const scene = { add() {} };
class Mesh {
constructor() {}
translateX(v) { this.x = v; }
translateY(v) { this.y = v; }
translateZ(v) { this.z = v; }
}
const THREE = { Mesh };
console.log(createCubie());
发布于 2020-05-13 12:17:52
一种方便的方法是使用嵌套的Array.from(),它内置在映射回调中。
您的问题是您没有创建任何内部数组,而是将所有内容都推入到一个平面数组中
const arr = Array.from({length:3}, (_, i) => {
return Array.from({length:3}, (_, j) => `row ${i}, elem ${j}`)
});
console.log(arr)
发布于 2020-05-13 12:14:50
矩阵只是一组n深度的嵌套数组。Javascript没有创建多维数组的能力,但可以创建n维嵌套数组,例如。
let cube = [[["x1"],["x2"],["x3"]],[["y1"],["y2"],["y3"]],[["z1"],["z2"],["z3"]]];
console.log(cube[0][0][0]);
https://stackoverflow.com/questions/61766222
复制相似问题