2011-04-21 156 views
1

这里是我的数组:如何从数组中删除数组?

var myarray = [["d1", "sections/Dashboard-summary.html", "Dashboard"], 
       ["add", null, ""], 
       ["20", "sections/MW-1-summary.html", "MW-1"], 
       ["21", "sections/SB-5-summary.html", "SB-5"]] 

如何删除第二个元素["add", null, ""],使新的阵列是

[["d1", "sections/Dashboard-summary.html?781", "Dashboard"], 
["20", "sections/MW-1-summary.html?903", "MW-1"], 
["21", "sections/SB-5-summary.html?539", "SB-5"]] 

该元素可能无法始终处于第二的位置,但它的第一个值将永远是“添加”。如何删除“添加”的第一个值(myarray[1][0])的数组?

+0

这是否需要是一个数组?对于这种事情,最好使用链表。否则,您必须编写代码来遍历数组,找到条目,创建一个更小的新数组,然后复制所有信息减去“add”。 – Genzume 2011-04-21 01:33:44

+0

@Tyler:这是JavaScript。数组是列表。 – 2011-04-21 01:43:20

+0

@Matt是的,你是对的。出于某种原因,我完全忘记了这个事实。好点子。 – Genzume 2011-04-21 03:42:01

回答

4

该元素可能并不总是处于第二位置,但其第一个值将始终为“添加”。如何删除“添加”的第一个值(myarray[1][0])的数组?

使用与splice()循环。

for (var i = 0, myarrayLength = myarray.length; i < myarrayLength; i++) { 
    if (myarray[i][0] === 'add') { 
     myarray.splice(i, 1); 
     break; 
    } 
} 

jsFiddle

+0

切片将返回您删除的数组部分,并且不会修改原始数组。拼接实际上将从阵列中移除元素。 – Marcelo 2011-04-21 01:38:02

+0

@Marcelo哎呀!我将编辑:) – alex 2011-04-21 01:41:21

+0

在对你的回应进行评论后,我意识到我犯了同样的错误:S – Marcelo 2011-04-21 01:44:48

0

使用splice,就像这样:

myarray.splice(1, 1)

请参阅本tutorial的详细信息,splice

+0

[请避免w3schools](http://w3fools.com)。 [MDC](https://developer.mozilla.org/en/JavaScript/Guide)是一个更好的JavaScript参考源,在这种情况下请参阅['Array.splice()'](https://developer.mozilla .ORG/EN/JavaScript的/参考/ Global_Objects /阵列/拼接)。 – 2011-04-21 02:04:25

+0

当您知道要移除的元素的位置时,拼接起作用。但在我的情况下,空的元素不会总是处于第二个位置。我如何找到空的元素并将其删除? – GravyPlaya 2011-04-21 18:05:03

+0

你可以遍历循环,看看'typeof(myarray [i])==“undefined”'。 – 2011-04-21 18:46:10

0

可以完全除去它(慢):

myarray.splice(1, 1); 

可以从数组中删除它,并且在它离开一个 “洞”(左位置1未定义):

delete myarray[1];