Javascript 从对象数组中删除对象
我有如上所示的对象数组。和一个名为delete_id的变量Javascript 从对象数组中删除对象,javascript,arrays,loops,object,underscore.js,Javascript,Arrays,Loops,Object,Underscore.js,我有如上所示的对象数组。和一个名为delete_id的变量 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:O
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
这表示id为1和2的对象。它应该删除对象数组中的对象,并给出如下最终结果:
delete_id = 1,2
有人能告诉我如何做到这一点吗。我尝试使用下面的函数。它只删除变量delete_id中的第一个值,即id为1的值被删除。类似地,如果我们有delete_id=2,3,那么它只删除2。我想同时删除2和3
Object {Results:Array[1]}
Results:Array[3]
[0]
0:Object
id=3
name:'ashley'
upper:null
首先从
数组(tabledata),value=1(delete_id),key=json中的key(id)
获取数组中该对象的索引
删除其索引
您可以使用.split()
和.map()
将delete\u id
字符串转换为数字id数组。然后,您可以使用.filter()
进行清理
var玩家=[
{
id:1,
姓名:“瑞克”,
上限:“0.67”
},{
id:2,
姓名:“大卫”,
上:“0.46”
},{
id:3,
姓名:“艾希礼”,
上限:空
}
];
var delete_id=“1,2”;
var exclude=delete_id.split(',').map(Number);
players=players.filter(函数(播放器){
返回exclude.indexOf(player.id)=-1;
});
控制台日志(播放器)代码>如果更改removeID代码以查看索引是否等于-1,则代码将运行
函数removeID(删除\u id){
tabledata=tabledata.filter(函数(obj){
返回delete_id.indexOf(obj.id)=-1;//此处添加==-1
});
}
var表格数据=[{
id:1,
姓名:“瑞克”,
上限:“0.67”
}, {
id:2,
姓名:'大卫',
上:“0.46”
}, {
id:3,
姓名:“艾希礼”,
上限:空
}];
var-id=[1,2]//将其定义为数组(不确定是否已定义)
removeID(ids);
console.log(tabledata)代码>我假设delete\u id是一个整数数组。在这种情况下,您可以使用下面的代码过滤以排除提供的ID
它将检查obj.id是否不在delete_id中,然后obj将包含在新的筛选数组中。它还将保持tabledata的完整性
tabledata.splice(index,1);
?我可以使用splice从对象数组中删除吗?数组是数组,否?delete\u id=1,2
@RC-它是字符串。
function findObj(array,value,key) {
var result = array.filter(function (obj) {
if (obj[key] === value || obj[key] == value)
return obj;
});
return result;
};
var selectedObj=findObj(tabledata,delete_id,'id');
var index=tabledata.indexOf(selectedObj[0]);
tabledata.splice(index,1);
var filtered = tabledata.filter(function(obj) {
return !(obj.id in delete_id)
})