2012-06-14 42 views
18

thể trùng lặp:
Remove specific element from a javascript array?Xóa đối tượng khỏi Mảng JavaScript?

Cụ thể tôi đã một mảng như sau:

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

Bây giờ bạn muốn loại bỏ url yếu tố có giá trị "liên kết 2" và sau khi gỡ bỏ các mảng duy nhất như sau:

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

Vậy ai có thể giúp tôi vấn đề này? Thanks a lot

+4

Tôi không nghĩ đây là bản sao trực tiếp của câu hỏi đó. Trong câu hỏi khác chỉ có một giá trị nguyên thủy được sử dụng. 'indexOf' sẽ ** không ** làm việc ở đây. Vì vậy, trừ khi chỉ số là (luôn luôn) được biết, một chút của câu đố là mất tích với 'splice' ... –

+0

Tôi đã nhìn thấy câu hỏi này nhiều lần rồi. –

+0

'arr.filter (hàm (phần tử) { return (element.url === 'link 2'? False: true); })' –

Trả lời

3

Sử dụng chức năng nối để loại bỏ một phần tử trong một mảng:

arr.splice(1, 1); 

Nếu bạn muốn loại bỏ một phần tử của mảng mà không biết chỉ số dựa trên một đặc tính các yếu tố, bạn sẽ có để lặp qua mảng và mỗi thuộc tính của từng phần tử:

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

Bạn có thể làm bộ lọc.

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

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

PS:Array.filter phương pháp được mplemented trong JavaScript 1.6, hỗ trợ bởi hầu hết các trình duyệt hiện đại, Nếu để hỗ trợ các trình duyệt cũ, bạn có thể viết một của riêng bạn.

+3

Vui lòng bao gồm các yêu cầu ... không phải ai cũng may mắn có được như vậy chức năng (không có một shim). –

+0

@pst Yep, Đã thêm. – xdazz

+0

Tuyệt vời, đã giúp tôi hết sức! –

Các vấn đề liên quan