从常规数组创建新的2D数组

时间:2013-03-21 09:52:32

标签: javascript arrays multidimensional-array sorting

如果我有一个JavaScript数组:

a = ["12", "34", "56", "78"];

我想创建一个像这样的新2D数组:

b = [ ["12345678"], ["34567812"], ["56781234"], ["78123456"] ];

我知道这应该很简单,但我无法理解......今天我的大脑有点慢......:/

2 个答案:

答案 0 :(得分:5)

在不同的枢轴位置加入字符串。

n = [];
for(i = 0; i < a.length; i++){
    n.push(a.slice(i).join("") + a.slice(0,i).join(""));
}

输出:

[ "12345678", "34567812", "56781234", "78123456" ]

我不确定在输出中嵌套单个元素数组是否有误,但如果需要,只需在push内添加方括号。

答案 1 :(得分:1)

您可以将mapconcat结合使用,如下所示:

var newA = a.map(function() {
    var copy = a.slice();
    return [copy.concat(copy.splice(0, arguments[1])).join('')];
});

// => [ ["12345678"], ["34567812"], ["56781234"], ["78123456"] ];