JavaScript中的三维数组

yhxst69z  于 2023-05-27  发布在  Java
关注(0)|答案(4)|浏览(99)
var a = new Array();
var b  = [1,2,3,4,5,6,7];
for(i in b){a[i] = new Array(new Array());}
a[0][1][2] = Math.random();// error:VM205:1 Uncaught TypeError: Cannot set property '2' of undefined(…)

如何在javascript中使用三维数组?
如何像Java一样使用它
例如:double a = new double[length][length][length];
如何提前记忆。

tyu7yeag

tyu7yeag1#

在Javascript中,没有提前示例化变量的用处,也没有编译时内存分配这样的事情,因为,嘿,没有编译时!但是如果你真的想这么做,它并不像Java那样微不足道:

const length = 7;
const range = new Array(length).fill();
const array = range.map(e => range.map(e => range.map(e => e)));

console.log(JSON.stringify(array)); // -> "[[[null,null,null],[null,null,null],[null,null,null]],[[null,null,null],[null,null,null],[null,null,null]],[[null,null,null],[null,null,null],[null,null,null]]]"

它唯一的一点是,只要你保持在[0,length)边界内,array[x][y][z]对于任何xyz都不会抛出TypeError。

vnjpjtjt

vnjpjtjt2#

你可以这样做

const items = [[[]]] // init 3d array

// assign values
items[0][0][0] = 0
items[0][0][1] = 1
items[0][0][2] = 2

// display
for (const i of items) {
  for (const j of i) {
    for (const k of j) {
      console.log('k = ', k)
    }
  }
}
yhuiod9q

yhuiod9q3#

类似于里沙特的答案,但长度不同。

const array1 = Array(2).fill().map(e => Array(4).fill().map(e => Array(3).fill("3").map(e => e)));
console.log(JSON.stringify(array1));
sxissh06

sxissh064#

我在目前的项目中采用了这种方法:

const sourceImage = [1,2,3,255,4,5,6,255,7,8,9,255,10,11,12,255 ]; // RGBA - 16
    
    let noAlphaImage = [];
    
    for (var i = 0; i < sourceImage.length; i++)
    {       
        if (i % 4 !== 3)
        {
            noAlphaImage.push(sourceImage[i]); 
        }
    }
    
    console.log(noAlphaImage);
    
    const WIDTH = 2, HEIGHT = 2, PIXEL = 3;
    var destImage = [];
    
    for (var w = 0; w < WIDTH; w++)
    {
        destImage[w] = [];
        for (var h = 0; h < HEIGHT; h++)
        {
            destImage[w][h] = [];
            for (var p = 0; p < PIXEL; p++)
            {
                const destIndex = (w * HEIGHT * PIXEL) + (h * PIXEL) + (p);
                destImage[w][h][p] = noAlphaImage[destIndex];      
            }
        }
    }
    
    console.log(destImage);

相关问题