2016-08-08 9 views
-1
Object {Results:Array[3]} 
Results:Array[3] 
[0-2] 
    0:Object 
      id=1  
      name: "Rick" 
      upper:"0.67" 
    1:Object 
      id=2  
      name:'david' 
      upper:"0.46" 
    2:Object 
      id=3  
      name:'ashley' 
      upper:null 

私は上記のようなオブジェクトの配列を持っています。そしてオブジェクトの配列からオブジェクトを削除する

delete_id = 1,2 

をdelete_idという名前の変数には、これはこれは、オブジェクトの配列内のオブジェクトを削除し、次のように最終的な結果を与える必要があり、ID 1と2を持つオブジェクトを示しています

Object {Results:Array[1]} 
Results:Array[3] 
[0] 
    0:Object 
      id=3  
      name:'ashley' 
      upper:null 

誰かがさせることができます私はこれを達成する方法を知っています。私はこの機能を以下のように使用しようとしました。 variale delete_idの最初の値だけが削除されます。つまり、1のidが削除されます。私たちは= 2,3をdelete_idしている場合similaryそれは唯一、まず 配列(TABLEDATA)からオブジェクトを見つける2.私は2と3の両方を削除したい...

function removeID(delete_id) { 
    tabledata = tabledata.filter(function (obj) { 
     return delete_id.indexOf(obj.id); 
    }); 
+0

http://stackoverflow.com/questions/500606/deleting-array-elements-in-javascript-delete-vs-splice? –

+0

スプライスを使用してオブジェクトの配列から削除できますか? – Patrick

+0

配列は配列です、いいえ? –

答えて

1

そのインデックスを削除します。次に、.filter()を使用してクリーンアップを実行できます。

var players = [ 
 
    { 
 
    id: 1, 
 
    name: "Rick", 
 
    upper: "0.67" 
 
    },{ 
 
    id: 2, 
 
    name: "david", 
 
    upper: "0.46" 
 
    },{ 
 
    id: 3, 
 
    name: "ashley", 
 
    upper: null 
 
    } 
 
]; 
 

 
var delete_id = "1,2"; 
 

 
var exclude = delete_id.split(',').map(Number); 
 

 
players = players.filter(function(player) { 
 
    return exclude.indexOf(player.id) == -1; 
 
}); 
 

 
console.log(players);

1
function findObj(array,value,key) { 
      var result = array.filter(function (obj) { 
       if (obj[key] === value || obj[key] == value) 
        return obj; 
      }); 
      return result; 
     }; 

を削除します値= 1(delete_id)、キー= JSONにキー(ID)配列内のそのオブジェクトの

var selectedObj=findObj(tabledata,delete_id,'id'); 

GETインデックス

var index=tabledata.indexOf(selectedObj[0]); 

あなたは、数値IDの配列にあなたのdelete_id文字列を変換するために.split().map()を使用することができます

tabledata.splice(index,1); 
1

コードを使用すると、インデックスが-1

function removeID(delete_id) { 
 
    tabledata = tabledata.filter(function(obj) { 
 
    return delete_id.indexOf(obj.id)===-1; //added === -1 here 
 
    }); 
 
} 
 
var tabledata = [{ 
 
    id: 1, 
 
    name: "Rick", 
 
    upper: "0.67" 
 
}, { 
 
    id: 2, 
 
    name: 'david', 
 
    upper: "0.46" 
 
}, { 
 
    id: 3, 
 
    name: 'ashley', 
 
    upper: null 
 
}]; 
 

 
var ids = [1,2]; //defined it as an array (not sure if you did) 
 
removeID(ids); 
 
console.log(tabledata);

1

等しいかどうかを確認するためにremoveIDコードを変更した場合、私はdelete_idがあることを前提と走ります整数配列。その場合、フィルタを使用して、提供されたIDを下のコードで除外することができます。

obj.idがdelete_idにないかどうかを確認すると、objが新しいフィルタされた配列に含まれます。また、それはtabledataをそのまま残します。

var filtered = tabledata.filter(function(obj) { 
    return !(obj.id in delete_id) 
}) 
関連する問題