[英]Delete objects from array of objects
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的變量
delete_id = 1,2
因此,這表明ID為1和2的對象。它應刪除對象數組中的對象,並給出最終結果,如下所示:
Object {Results:Array[1]}
Results:Array[3]
[0]
0:Object
id=3
name:'ashley'
upper:null
有人可以讓我知道如何實現這一目標。 我試圖使用下面的功能。 它僅刪除variale delete_id中的第一個值。 即編號為1的id被刪除。 類似地,如果我們有delete_id = 2,3,那么它只會刪除2。我想同時刪除2和3 ...
function removeID(delete_id) {
tabledata = tabledata.filter(function (obj) {
return delete_id.indexOf(obj.id);
});
function findObj(array,value,key) {
var result = array.filter(function (obj) {
if (obj[key] === value || obj[key] == value)
return obj;
});
return result;
};
首先從數組(tabledata)中找到對象,值= 1(delete_id),鍵= json(id)中的鍵
var selectedObj=findObj(tabledata,delete_id,'id');
獲取該對象在數組中的索引
var index=tabledata.indexOf(selectedObj[0]);
刪除其索引
tabledata.splice(index,1);
您可以使用.split()
和.map()
將delete_id
字符串轉換為數字ID數組。 然后,您可以使用.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);
如果您更改removeID代碼以查看索引是否等於-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);
我假設delete_id是一個整數數組。 在這種情況下,您可以使用以下代碼進行過濾以排除提供的ID。
它將檢查obj.id是否不在delete_id中,然后obj將包含在新的過濾數組中。 同樣,它將保留表數據不變。
var filtered = tabledata.filter(function(obj) {
return !(obj.id in delete_id)
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.