javascript - 使用 JavaScript 从网格数组中删除列

标签 javascript arrays grid row multiple-columns

编写一个接受两个参数的函数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]

我想一旦理解了如何删除一列的概念,我就会理解如何删除两列。

编辑:Link to codepen

最佳答案

这是我制作的一个示例,它将删除您选择的一列。当您说“删除 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/

相关文章:

javascript - three.js - 单击平面内的 X Y 位置

javascript - 为什么从子窗口调用时父窗口文本框的 OnChange 事件不起作用

javascript - 如何从 JavaScript 中的 promise 链中的函数访问 'this'?

python-3.x - map 绘图网格问题

python - 带网格的 tkinter Canvas 滚动条?

javascript - Bluebird 无极绑定(bind)链

java - 结尾逻辑错误

javascript - 从 Javascript 数组中删除带有字符的字符串

python - 将 pandas 列的元素与另一个 pandas 数据框的列匹配

c++ - 计算具有不同行高的网格中的滚动条高度