仅在n级反转数组

时间:2015-08-07 13:09:00

标签: javascript optimization multidimensional-array reverse multi-level

我正在寻找一种在javascript中反转多维数组的好方法,但仅限于特定级别(n),例如:

[
        [[2,1], [4,2], [6,3], [3,4]], 
        [[5,1], [1,2], [3,3], [4,4]], 
        [[4,1], [7,2], [1,3], [2,4], ['monkey', [3,4,5,6,7]]]
]

进入此(n = 2):

[
        [[1,2], [2,4], [3,6], [4,3]], 
        [[1,5], [2,1], [3,3], [4,4]], 
        [[1,4], [2,7], [3,1], [4,2], [[3,4,5,6,7], 'monkey']]
]

目前,我已根据我的需要编写了这个简短的原型:

    Array.prototype.reverseAtLevel = function(level){
        if(level < 0)
            return;
        if(level == 0)
            this.reverse();
        this.forEach(function(element, index, array){
            if(element instanceof Array)
                element.reverseAtLevel(level-1);
        });
        return;
    };

像这样使用它:

aMultiDim.reverseAtLevel(2)

这是正确的方法吗?

编辑: 我不想要&#34;直接&#34; .reverse()行为将输出我的第一个例子:

[
        [[4,1], [7,2], [1,3], [2,4], ['monkey', [3,4,5,6,7]]],
        [[5,1], [1,2], [3,3], [4,4]], 
        [[2,1], [4,2], [6,3], [3,4]]
]

0 个答案:

没有答案