2011-11-30 127 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