I've an array of elements as follows
entities
[
{
"name":"tiger",
"imageurl":"https://someurl.com",
"type":"animal"
},
{
"name":"cat",
"imageurl":"https://someurl.com",
"type":"animal"
},
{
"name":"parrot",
"imageurl":"https://someurl.com",
"type":"bird"
},{
"name":"potato",
"imageurl":"https://someurl.com",
"type":"vegetable"
},
{
"name":"orange",
"imageurl":"https://someurl.com",
"type":"fruit"
},
{
"name":"orange",
"imageurl":"https://someurl.com",
"type":"colour"
}
]
我有另一个如下所示的数组
elemToRemove(要移除的元素)
[orange@fruit,cat@animal,tiger@animal]
我想要删除以下属性:name=orange
和 type=fruit
,name=cat
和 type=animal
,name=tiger
和 type=animal
如果是单个属性,可以使用数组过滤器轻松删除元素,但在这种情况下,我无法使用map/filter/reduce来删除这些元素。
我使用split创建了一个名称和类型的数组,并尝试进行操作,但由于类型重复,条件始终返回false。
let nameArray = elemToRemove.map(function (elem) {
return elem.split('@')[0];
});
let typeArray= elemToRemove.map(function (elem) {
return elem.split('@')[1];
});
var reqData= entities.filter(function (obj) {
return (nameArray.indexOf(obj.name) === -1 && typeArray.indexOf(obj['env']) === -1);
});
因此,始终会给我一个空的reqData数组。我没有提供id,否则我可以使用id来删除元素。 期望输出
[
{
"name":"parrot",
"imageurl":"https://someurl.com",
"type":"bird"
},{
"name":"potato",
"imageurl":"https://someurl.com",
"type":"vegetable"
},
{
"name":"orange",
"imageurl":"https://someurl.com",
"type":"colour"
}
]
最优雅的方法是什么,可以实现这一点?