从对象数组中删除对象
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的objects,应该删除objects数组中的objects,最终结果如下:
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;
};
First find the object from the
array(tabledata),value=1(delete_id),key=the key in json(id)
var selectedObj=findObj(tabledata,delete_id,'id');
get index of that object in the array
var index=tabledata.indexOf(selectedObj[0]);
delete its index
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)
})
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的objects,应该删除objects数组中的objects,最终结果如下:
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;
};
First find the object from the array(tabledata),value=1(delete_id),key=the key in json(id)
var selectedObj=findObj(tabledata,delete_id,'id');
get index of that object in the array
var index=tabledata.indexOf(selectedObj[0]);
delete its index
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)
})