如果我有一个数组数组如下:
[ [ A0 , B0 , C0 , D0 , E0 ],
[ A1 , B1 , C1 , D1 , E1 ],
[ A2 , B2 , C2 , D2 , E2 ] ] // array of 3x5
我想像这样得到一个新的子集数组:
[ [ A0 , B0 , C0 ],
[ B1 , C1 , D1 ],
[ C2 , D2 , E2 ] ] //array of 3x3
这意味着 sliceLength = 3,但是如何做到这一点呢?使用拼接(如复制原始文件,然后删除不需要的部分)、切片和/或推送是否更好?
这是我到目前为止所拥有的,但语法看起来不对:
var newMega = [];
var sliceLength = 3;
for (var i=0; i<originalMatrix.length; i++) {
var inner = originalMatrix.slice(i, sliceLength); // Here is the issue
newMega.push(inner);
}
看起来该语法会在整个 originalMatrix 上调用 slice,而不知道它应该对嵌套数组的哪个索引进行切片。应该是originalMatrix[i].slice(i, sliceLength)
吗?
最佳答案
尝试对内部数组进行切片 (originalMatrix[i]
)。此外,您可能想调用 splice
而不是 slice
:
var newMega = [];
var spliceLength = 3;
for (var i=0; i<originalMatrix.length; i++) {
var inner = originalMatrix[i].splice(i, spliceLength);
newMega.push(inner);
}
这是一个 demonstration .
关于javascript - 数组数组的 JS 子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20052963/