Удаление строк в массиве Javascript 2D - PullRequest
1 голос
/ 01 декабря 2011

Я хочу удалить полную строку из 2D-массива в javascript, где есть определенный идентификатор.Я искал и не могу найти никаких примеров.Как я могу добиться этого?

У меня есть такой объект / массив ...

[
{"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}
]

Мои данные извлекаются из базы данных MySQL через php и json_encoded, как показано ниже ...

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

Моя проблема в том, что если я хочу удалить полную строку, например, такую, где id == 1, например, как мне этого добиться?

Я пытался использовать атрибут удаления, но этоне удалось.

Я также пытался использовать соединение следующим образом

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

, но безрезультатно.Пожалуйста, кто-нибудь может помочь?

Ответы [ 3 ]

2 голосов
/ 01 декабря 2011

Вы можете просмотреть их, проверив наличие идентификатора, и, если найдете, используйте 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 голосов
/ 01 декабря 2011
yourarray.filter(function(obj) { return obj.id != "1"; })

будет работать в современных браузерах

0 голосов
/ 01 декабря 2011

Вы управляете объектом $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]. Или тогда у вас возникнут проблемы с порядком сортировки?

...