如何在JavaScript中删除二维数组中的行

14

如何在JavaScript中删除二维数组中的行,如果我想要删除行号为4的所有元素,该怎么做?

6个回答

17

这是一个使用splice来删除行的示例:

var array = [];

var count = 0;
for (var row=0; row<4; row++) {
    array[row] = [];
    for (var col=0; col<5; col++) {
      array[row][col] = count++;
    }
}

console.log(array);

   [ [ 0,  1,  2,  3,  4  ],
     [ 5,  6,  7,  8,  9  ],
     [ 10, 11, 12, 13, 14 ],
     [ 15, 16, 17, 18, 19 ] ]


function deleteRow(arr, row) {
   arr = arr.slice(0); // make copy
   arr.splice(row - 1, 1);
   return arr;
}

console.log(deleteRow(array, 4));

[ [ 0,  1,  2,  3,  4  ],
  [ 5,  6,  7,  8,  9  ],
  [ 10, 11, 12, 13, 14 ] ]

这段代码没有删除正确的行,它在我的情况下删除了其他一些东西。 - Rajani Rampelli
@RajaniRampelli,你的数组数据长什么样? - Miguel Mota
我的数组是字符串类型的。 - Rajani Rampelli
我认为它只能删除最后一行。中间的行没有正确删除。 - Rajani Rampelli
这不会起作用,即使在多维数组中也可以使用splicearray.splice(indexOfArr,1) - Vandolph Reyes

5
假设您有一个名为'arr'的数组,您可以通过arr.splice(3,1)来删除整行;

3在这种情况下是什么?行-1? - Rajani Rampelli
这是针对您的问题的,您提到了第四个元素。因此,如果您想删除第n行,则使用arr.splice(n-1,1)。这里的第一个参数是行的索引,第二个参数是要删除的元素数量。在您的2D数组中,它表示您要删除多少行。 - Vaibhav
你作为第一个参数传递了什么? - Vaibhav
这段代码删除了最后一行。如果数组有第4行,则会被删除。如果是6行的数组,则第6行将被删除。 - Rajani Rampelli
在您的情况下,行将具有总行数,然后只有您的最后一行将被删除。请参见此链接。http://jsbin.com/qopizojide/1/ - Vaibhav
请选择最佳答案,如果有帮助的话 :)将以下与编程有关的内容从英语翻译成中文。 - Vaibhav

3
我知道这个问题很老了,但是当我们在搜索如何从JS的2D(多维)数组中删除时,它是最先出现的结果之一。
以下代码可以根据内部数组的键来删除内部数组。如果有多个相同的键,则它应该继续工作。 在此示例中,我正在查找并删除具有键18的数组。
对于格式不整齐的情况,抱歉。但是这可以帮助说明问题。

var items = [
  ["19", 1],
  ["18", 2],
  ["20", 3]
];

//console.log(items);
document.getElementById("a").innerHTML = items;

for (var i = 0; i < items.length; i++) {
  if (items[i][0] == "18") {
    items.splice(i, 1);
  }
}

//console.log(items);
document.getElementById("b").innerHTML = items;
<p>Before</p>
<div id='a'></div>

<p>After</p>
<div id='b'></div>


1
谢谢,这太棒了。 - Andy
谢谢,这是唯一一个适用于我的二维数组的方法。 - Scott

2

当需要删除第4行及其后面的1行时,只需调用splice(4, 1)方法即可。

twoDimensionalArray.splice(4, 1); // remove 4th row

此外,shift()pop()是非常方便的方法,可以相应地删除第一行和最后一行。
twoDimensionalArray.shift(); // to remove first row
twoDimensionalArray.pop(); // to remove last row

1
这里有一个带有行删除按钮(按ID删除)的二维数组的可视化示例,以及jQuery预览表格。希望对您有用!
JS从二维数组中删除行 + 在jQuery购物车表格中显示 https://jsbin.com/xeqixi/edit?html,js,output

-1

删除数组[index]; array.length--;

在您的情况下,将索引设置为4并执行上述语句,您需要手动减少数组的长度。


手动调整 length 属性是一个警告信号。你的代码会在第四个索引处留下一个空项,且会失去数组中的最后一项。 - Théophile

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接