在javascript中,从多维数组中删除元素的最便携的方法是什么?

What is the most portable way to delete element from multidimensional array in javascript?

本文关键字:方法 是什么 元素 删除 javascript 数组      更新时间:2023-09-26

在javascript中删除多维稀疏数组元素的最可移植的方法是什么?

将以下工作很好,如果行可以定义有时?

if( content[row] ) {
    delete content[row][col];
}

这会有效吗?会更好吗?

if( r=content[row] ) {
    delete r[col];
}

看情况。delete将在元素所在的数组中留下空白,如下所示:

var arr = [0, 1, 2, 3];
delete arr[1];
arr; // [0, undefined, 2, 3]

要从数组中删除一个元素而不留下空洞,您应该使用splice():

arr.splice(1, 1); // Start deleting at index 1, delete one element
arr; // [0, 2, 3]

你的两个例子都工作得很好-如果content[row]不存在,if语句的主体将不会被评估。

您不仅需要删除元素,还需要调整数组的长度。

我通常将数组中最后一个元素的索引设置为被替换的元素,删除最后一个元素,并减少长度。它很快,但不保留数组的结构。

这是我正在制作的GameAPI的摘录:

a是数组,I是索引

removeAt    : function(a, i) {
    //Removes an element in array
    if(!(a.length>i)) return false;
    delete a[i];
    a[i] = a[a.length-1];
    delete a[a.length-1];
    a.length--;
    return true;
}