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
有人可以让我知道如何实现这一目标。我尝试使用以下功能。它只删除变量delete_id中的第一个值。即删除id为1。相似如果我们有delete_id = 2,3那么它只删除2.我想删除2和3两个...
function removeID(delete_id) {
tabledata = tabledata.filter(function (obj) {
return delete_id.indexOf(obj.id);
});
答案 0 :(得分:1)
function findObj(array,value,key) {
var result = array.filter(function (obj) {
if (obj[key] === value || obj[key] == value)
return obj;
});
return result;
};
首先从中找到对象 array(tabledata),value = 1(delete_id),key = json中的键(id)
var selectedObj=findObj(tabledata,delete_id,'id');
获取数组中该对象的索引
var index=tabledata.indexOf(selectedObj[0]);
删除其索引
tabledata.splice(index,1);
答案 1 :(得分: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);

答案 2 :(得分:1)
如果更改removeID代码以查看索引是否等于-1
,代码将运行
props
答案 3 :(得分:1)
我假设delete_id是一个整数数组。在这种情况下,您可以过滤以使用下面的代码排除提供的ID。
它将检查obj.id是否不在delete_id中,然后obj将包含在新的过滤数组中。它也会保留tabledata。
var filtered = tabledata.filter(function(obj) {
return !(obj.id in delete_id)
})