Javascript 2D数组行删除

时间:2011-11-30 22:09:44

标签: javascript arrays object slice

我想在javascript中从2D数组中删除一个完整的行,其中有一个特定的id。 我搜索过,我找不到任何例子。我怎样才能做到这一点?

我有一个像这样的对象/数组......

[
{"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和json_encoded从mysql数据库中提取的,如下所示......

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

我的问题是,如果我想删除一个完整的行,例如id == 1,例如我怎么能实现这个?

我尝试过使用remove属性但是失败了。

我也尝试过以下方式使用拼接

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

但无济于事。请有人帮忙吗?

3 个答案:

答案 0 :(得分:2)

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

可以在现代浏览器中使用

答案 1 :(得分: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/

答案 2 :(得分:0)

您正在控制$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]。或者您是否会遇到排序顺序的问题?