[英]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.