获取数组中的维度大小

10 javascript multidimensional-array

如何获得给定多维数组的维度?
编辑:它可以是1,2或3维,但每个子阵列具有相同的长度.

即为

var a = [[1,1,1], [1,1,1]]
Run Code Online (Sandbox Code Playgroud)

会[2,3]

xan*_*ded 16

var dimensions = [ arr.length, arr[0].length ];
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为内部数组的长度永远不会改变.


Anu*_*yal 8

考虑到子列表可以具有不同的大小,获得最小尺寸或根据需要使其最大化

function size(ar){
    var row_count = ar.length;
    var row_sizes = []
    for(var i=0;i<row_count;i++){
        row_sizes.push(ar[i].length)
    }
    return [row_count, Math.min.apply(null, row_sizes)]
}
size([[1, 1, 1], [1, 1, 1]])
Run Code Online (Sandbox Code Playgroud)

输出:

[2, 3]
Run Code Online (Sandbox Code Playgroud)


小智 6

获取多维数组的元素数量就这么简单......

var Size = a.join(',').split(',').length;
Run Code Online (Sandbox Code Playgroud)


小智 5

这适用于任何维度(假设每个子数组具有相同的长度):

function getDim(a) {
    var dim = [];
    for (;;) {
        dim.push(a.length);

        if (Array.isArray(a[0])) {
            a = a[0];
        } else {
            break;
        }
    }
    return dim;
}
Run Code Online (Sandbox Code Playgroud)


eri*_*icb 2

var dim = [
    a.length,
    a[0].length
];
Run Code Online (Sandbox Code Playgroud)

考虑到每个子数组的长度相同,这应该可行,但是,如果情况并非如此,您可能需要执行以下操作:

function findDim(a){
    var mainLen = 0;
    var subLen = 0;

    mainLen = a.length;

    for(var i=0; i < mainLen; i++){
        var len = a[i].length;
        subLen = (len > subLen ? len : subLen);
    }

    return [mainLen, subLen];
};
Run Code Online (Sandbox Code Playgroud)