数组数组的JS子集

时间:2013-11-18 16:38:04

标签: javascript arrays

如果我有一个数组数组如下:

[ [ 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)吗?

1 个答案:

答案 0 :(得分:2)

尝试切片内部数组(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