编写一个接受两个参数的函数removeColumns
:
originalGrid
(二维数组)
numColums
(数字)
removeColumns
应该返回一个删除了正确数量的列的新网格。如果 numColumns
= 1,删除一列。如果 numColumns
= 2,删除两列。
removeColumns([[1, 2, 3],
[1, 2, 3],
[1, 2, 3],
[1, 2, 3]], 2);
/* => [[1],
[1],
[1],
[1]]
*/
我试过:
function removeColumns (originalGrid, numColumns) {
let newGrid = [];
//if numColumns = 1, remove 1 column
for (let col = 0; col < originalGrid.length; col ++)
if (numColumns === 1) {
newGrid.pop(col)
}
//if numColums = 2, remove 2 columns
else if (numColumns === 2) {
newGrid.pop(col + 1)
}
return newGrid;
}
这有几个问题。
我了解如何从一个数组中删除最后一项:
function removeItem(array) {
let poppedArray = array.pop();
return array;
}
但我不明白如何遍历网格中的三个连续数组,并从所有三个数组中删除最后一项。
[1, 2, 3]
[1, 2, 3]
[1, 2, 3]
我想一旦理解了如何删除一列的概念,我就会理解如何删除两列。
最佳答案
这是我制作的一个示例,它将删除您选择的一列。当您说“删除 2 列”时,我不确定您要删除 3 列中的哪一列,但我认为这应该可以帮助您。我认为你缺少的是拼接方法。
function removeColumns(arrayOfArrays, column) {
for (var i = 0; i < arrayOfArrays.length; i++) {
arrayOfArrays[i].splice(column - 1, 1);
}
return arrayOfArrays;
}
var arrayOfArrays = [
[1, 2, 3],
[1, 2, 3],
[1, 2, 3],
[1, 2, 3]
];
var results = removeColumns(arrayOfArrays, 1);
console.log(results);
jsFiddle 在这里:https://jsfiddle.net/a5rqLbuh/
如果我这样做是为了原始速度,我会合并一个库,例如 async 以同时发送所有数组以进行修改,然后将其重新组合在一起。我认为这不会保留数组数组的原始顺序,但值得研究。
关于javascript - 使用 JavaScript 从网格数组中删除列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55463539/