我的问题几乎就是发布here的问题,但是我的问题被归结为JS的准系统Rhino实现,所以我没有像Numpy这样的工具。
我有一个看起来像这样的数组(向下扩展任意数量):
[[ A, B, 1, 2, α, β],
[ C, D, 3, 4, θ, μ],
[ E, F, 5, 6, ω, ξ]
我希望将水平切片/拼接成“chunkified”'数组X元素厚;让我们说我需要2块厚的块:
[[[A, B], [[1, 2], [[α, β],
[C, D], [3, 4], [θ, μ],
[E, F]], [5, 6]], [ω, ξ]]]
我怎么能这样做?
答案 0 :(得分:3)
arr = [ [ 'A', 'B', 1, 2, 'α', 'β' ],
[ 'C', 'D', 3, 4, 'θ', 'μ' ],
[ 'E', 'F', 5, 6, 'ω', 'ξ' ] ], l = console.log, j = JSON.stringify
l(j( arr[0].slice(2, 4) )) // "[1,2]" - slice can be used to get part of array
l(j( arr.map(a => a.slice(2, 4)) )) // "[[1,2],[3,4],[5,6]]" - map + slice to get part of each sub-array
result = [0, 2, 4].map(i => arr.map(a => a.slice(i, i+2))) // map over the indexes to split by to get the parts
l(j( arr )), l(j( result ))
答案 1 :(得分:1)
尝试这种方式:
var initialArray = [[ 'A', 'B', 1, 2, 'α','β'],
[ 'C', 'D', 3, 4, 'θ', 'μ'],
[ 'E', 'F', 5, 6, 'ω', 'ξ']];
function convertArray(array){
var convertedArray = [];
var length = array.length;
for (var i = 0; i < length; i++){
var rowArray = [];
var colArray = [];
var innerLength = array[i].length;
for (var j = 0; j < innerLength; j++){
colArray.push(array[i][j]);
if ((j + 1) % 2 === 0){
rowArray.push(colArray);
colArray = [];
}
}
convertedArray.push(rowArray);
}
return convertedArray;
}
var newArray = convertArray(initialArray);
console.log(newArray)
&#13;
这是一个快速解决方案。