2011-11-30 129 views
1

我想要從JavaScript中的二維數組中刪除一個完整的行,其中有一個特定的ID。 我搜查了,我找不到任何例子。我怎樣才能做到這一點?Javascript 2D陣列行刪除

我有一個這樣的對象/陣列...

[ 
{"id":"1","title":"Sample Event 1\n","start":"Nov 27 2011 10:30:00 GMT+0000 (GMT)","end":"Nov 27 2011 11:30:00 GMT+0000 (GMT)","allDay":false}, 
{"id":"2","title":"Sample Event 2","start":"Nov 28 2011 12:30:00 GMT+0000 (GMT)","end":"Dec 01 2011 12:30:00 GMT+0000 (GMT)","allDay":true}, 
{"id":"3","title":"Sample Event 3\n","start":"Nov 27 2011 11:30:00 GMT+0000 (GMT)","end":"Nov 27 2011 12:30:00 GMT+0000 (GMT)","allDay":false} 
] 

我的數據從通過PHP MySQL數據庫拉動並且json_encoded像下面...

var eventObject = <?php echo json_encode($events);?>; 

我的問題是,如果我想刪除一個完整的行,例如,其中id == 1例如我怎麼能實現這個?

我試過使用remove屬性,但是失敗了。

我也以下列方式

var eventLocation = eventObject.indexOf(EventId); 
eventObject.splice(11,1); 

但無濟於事使用拼接嘗試。請任何人協助?

回答

2
yourarray.filter(function(obj) { return obj.id != "1"; }) 

將在現代瀏覽器

+1

+1,人們應該開始使用這些更多。對於

+0

謝謝我以下面的格式嘗試了這一點,但無濟於事......有一天,我將掌握JavaScript。你介意看一下嗎? function deleteEvent(EventId){ var confirmDeleteEvent = confirm(「您確定要刪除此事件嗎?」);如果(confirmDeleteEvent!= true){ return false; } else { eventObject = eventObject.filter(function(){return el.id!= EventId}); 警報(「已刪除」+ EventId); } } – JSweete

+0

什麼不工作,你會得到錯誤信息?對我來說似乎很好。然而,你可能會縮短代碼到'if(!confirm(「Are you sure?」))return false;/* else */search'n'splice()'。 – Bergi

2

,你可以通過他們循環,檢查該ID的工作,如果你發現它使用splice

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

console.log(eventObject); 

http://jsfiddle.net/SCfaP/

+0

謝謝我試圖使用下面的格式,但無濟於事,我真的陷入了這裏:(任何想法 function deleteEvent(EventId){ var confirmDeleteEvent = confirm(「您確定要刪除此事件嗎?」) ;如果 (confirmDeleteEvent =真!){ 返回FALSE;} 爲(VAR I = 0;我 JSweete

+0

@JSweete請在http://jsfiddle.net上重現問題,並將鏈接發送給我。 –

0

您contolling的$events對象。爲什麼你不像

eventObject = { 
    "1": {"title":"Sample Event 1\n","start":"Nov 27 2011 10:30:00 GMT+0000 (GMT)","end":"Nov 27 2011 11:30:00 GMT+0000 (GMT)","allDay":false}, 
    "2": {"title":"Sample Event 2","start":"Nov 28 2011 12:30:00 GMT+0000 (GMT)","end":"Dec 01 2011 12:30:00 GMT+0000 (GMT)","allDay":true}, 
    "3": {"title":"Sample Event 3\n","start":"Nov 27 2011 11:30:00 GMT+0000 (GMT)","end":"Nov 27 2011 12:30:00 GMT+0000 (GMT)","allDay":false} 
}; 

而不是eventArray?有了這個,你可以很容易地使用delete eventObject[toRemove]。或者你會在排序順序上遇到問題嗎?

+0

不幸的是,我使用的日曆需要以上述格式構造對象。我有些如何設法使用上面給出的編碼樣本,並且提供了一些如何使它現在工作,所以非常感謝您的幫助,謝謝每個人貢獻:) p.s.我討厭javascript。 – JSweete

+0

我應該downvote您對該p.s.的評論。 :-) – Bergi