2011-11-30 19 views
1

javascriptの2D配列から完全な行を削除する場合は、特定の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} 
] 

私のデータは、私の問題がある

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

... PHP経由でMySQLデータベースから引き出され、以下のようにjson_encodedされますたとえば、id == 1のような完全な行を削除したい場合、どうすればこれを達成できますか?

削除属性を使用しようとしましたが、これは失敗しました。

私は、次のような方法

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

ではなく、無駄にスプライスを使用して試してみました。誰でも助けてくれますか?

答えて

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

あなたがIDをチェックし、最新のブラウザでそれらをループを

+1

+1、人々はこれ以上の使用を開始する必要があります。

+0

おかげさまで、私はこれを次の形式で試してみましたが、役に立たなかった...ある日、私はJavaScriptを理解します。見ていますか? function deleteEvent(EventId){ var confirmDeleteEvent = confirm( "本当にこのイベントを削除しますか?"); if(confirmDeleteEvent!= true){ falseを返します。 } else { eventObject = eventObject.filter(function(){return el.id!=イベントID}); アラート( "deleted" + EventId); } } – JSweete

+0

正確には動作しませんが、エラーメッセージが表示されますか?それは私にとってはうまくいくようです。 しかし、あなたのコードを '' if(!Are you sure? '')に短縮するとfalseを返します。/* else */search'n'splice() '。 – Bergi

2

を可能性が動作します、そしてあなたはそれが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; iのeventObject.lengthを<;私は++)のため { 場合([i]が.ID ==のEventId eventObject)が{ をeventObjectsplice(i、1); 休憩。 } } console.log(eventObject); アラート( "deleted" + EventId); } } – JSweete

+0

@JSweete http://jsfiddle.netで問題を再現し、私にリンクを送ってください。 –

0

あなたは$eventsオブジェクトをcontollingています。

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

残念ながら、私が使用しているカレンダーは、上記の形式でオブジェクトを構造化する必要があります。上記のコーディングサンプルを使ってどのように演奏することができましたか、そして今はどのように動作しているのでしょうか?ありがとうございました。お寄せいただきありがとうございました。私はjavascriptが嫌いです。 – JSweete

+0

私はそのp.sのあなたのコメントをdownvoteする必要があります。 :-) – Bergi

関連する問題