2012-06-14 191 views
18

可能重複:
Remove specific element from a javascript array?從JavaScript數組中刪除對象?

具體來說,我有一個數組如下:

var arr = [ 
    {url: 'link 1'}, 
    {url: 'link 2'}, 
    {url: 'link 3'} 
]; 

現在要刪除有價值的元素網址 「鏈接2」 和刪除後唯一的陣列如下:

arr = [ 
    {url: 'link 1'}, 
    {url: 'link 3'} 
]; 

那麼誰能幫助我解決這個問題呢?非常感謝

+4

我不認爲這是這個問題的直接重複。在另一個問題中只使用一個原始值。 'indexOf'將**不**在這裏工作。因此,除非該索引(總是)已知,否則拼接中缺少一部分拼圖... – 2012-06-14 03:56:22

+0

我已經多次看到此問題。 –

+0

'arr.filter(function(element){ return(element.url ==='link 2'?false:true); })' –

回答

3

使用拼接功能,在數組中刪除元素:

arr.splice(1, 1); 

如果你想刪除的數組元素不知道基於一個元素屬性的索引,你將有遍歷數組和每個元素的每個屬性:

for(var a = 0; a < arr.length; a++) { 
    for(var b in arr[a]) { 
     if(arr[a][b] === 'link 2') { 
      arr.splice(a, 1); 
      a--; 
      break; 
     } 
    } 
} 
17

您可以做一個過濾器。

var arr = [ 
    {url: "link 1"}, 
    {url: "link 2"}, 
    {url: "link 3"} 
]; 

arr = arr.filter(function(el){ 
    return el.url !== "link 2"; 
}); 

PS:Array.filter方法mplemented在JavaScript 1.6,通過最現代的瀏覽器都支持,如果支持舊的瀏覽器,你可以寫你自己的一個。

+3

請包括要求...不是每個人都有這樣的幸運,功能(沒有墊片)。 – 2012-06-14 03:58:33

+0

@pst是的,已添加。 – xdazz

+0

完美,幫我分配! –