• 締切済み

配列で特定のk-vを持つ要素を削除した

オブジェクトの配列から特定のkey-valueをもった要素を削除し、その分のインデックスの詰め合わせも行いたいのですが、実装が分からなく困っています。 例えば、下記のような例で、 ----------------------- obj1 = {  prop1_1 : 1,  prop1_2 : 2 }; obj2 = {  prop2_1 : 1,  prop2_2 : 2 }; obj3 = {  prop3_1 : 1,  prop3_2 : 2 }; objLst = [obj1, obj2, obj3]; ----------------------- objLstを走査して、『key が prop1_2』 で 『valeu が 2』のプロパティーを持つ要素(オブジェクト)を削除したいとします。 その際、obj1を削除して、 objLst = [obj2, obj3] になることを期待します。 以上、よろしくお願い致します。

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

filterが使えるなら・・・ var filter0 = function(e){ return !(e["prop1_2"] == 2); } var result = objLst.filter(filter0); とか。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

deleteは抜け番ができるのでspliceかな なおデータの削除は後ろからやっていく方が無難 <script> var objLst=[ {"prop1_1":1,"prop1_2":2}, {"prop2_1":1,"prop2_2":2}, {"prop3_1":1,"prop3_2":2} ]; var k="prop1_2"; var v=2; for(var i=objLst.length-1;i>=0;i--){ if(objLst[i][k]==v){ objLst.splice(i,1); } } document.write(objLst) </script>

関連するQ&A