Javascript 在数组对象中从数组中删除对象
我有一个复杂的对象数组,每个对象都有自己的标记数组 我还有一个对象,它应该与标记数组中的一个对象相匹配,如果是这样,就删除该标记 ,但是我的例子太简单了,到目前为止,下面的例子没有成功 基本上,我有对象Javascript 在数组对象中从数组中删除对象,javascript,arrays,for-loop,Javascript,Arrays,For Loop,我有一个复杂的对象数组,每个对象都有自己的标记数组 我还有一个对象,它应该与标记数组中的一个对象相匹配,如果是这样,就删除该标记 ,但是我的例子太简单了,到目前为止,下面的例子没有成功 基本上,我有对象标记,我需要将其从标记数组中的标记中删除 var tagsArray = [{ name: "group1", tags: [ { name: "1", tag_id: "123
标记
,我需要将其从标记
数组中的标记
中删除
var tagsArray = [{
name: "group1",
tags: [
{
name: "1",
tag_id: "1234"
},
{
name: "2",
tag_id: "5678"
},
{
name: "3",
tag_id: "9012"
}
]
},
{
name: "group2",
tags: []
}
];
console.log(tagsArray[0]);
// Need to find this inside of tags inside of tagsArray and remove it:
var tag = {
name: "3",
tag_id: "9012"
}
var temp_array = [];
temp_array.push(tag);
var map = {};
tagsArray.forEach(function(obj, index) {
map[obj.tag_id] = index;
});
console.log(map);
temp_array.forEach(function(obj) {
if ( obj.tag_id ) {
tagsArray.splice(tagsArray[map[obj.tag_id]]);
console.log(tagsArray);
}
});
您可以循环浏览
tagsArray
中的每个项目,然后在内部标记属性中过滤匹配的元素
var tagsArray=[{
名称:“组1”,
标签:[{
名称:“1”,
标签id:“1234”
}, {
名称:“2”,
标签id:“5678”
}, {
名称:“3”,
标签id:“9012”
}]
}, {
名称:“组2”,
标签:[]
}];
//需要在tagsArray内的标记内部找到此标记并将其删除:
var removeTag={
名称:“3”,
标签id:“9012”
}
var message='Before:
'+JSON.stringify(tagsArray)+'
';
tagsArray.forEach(函数(元素){
element.tags=element.tags.filter(函数(标记){
返回tag.name!=removeTag.name&&tag.tag\u id!=removeTag.tag\u id;
})
});
message+='After:
'+JSON.stringify(tagsArray);
document.body.innerHTML=message
Daniel Imms的解决方案非常好,但是这个解决方案也可以解决您的问题,而且速度更快
var tagsArray=[{
名称:“组1”,
标签:[{
名称:“1”,
标签id:“1234”
}, {
名称:“2”,
标签id:“5678”
}, {
名称:“3”,
标签id:“9012”
}]
}, {
名称:“组2”,
标签:[{
名称:“4”,
标签号:“1012”
}]
}];
var removedTag={
名称:“4”,
标签号:“1012”
};
var message='Before:'+JSON.stringify(tagsArray)+'';
tagsArray.forEach(函数(obj,i){
obj.tags.forEach(函数(tag,j){
if(tag.tag\u id==removedTag.tag\u id&&tag.name===removedTag.name){
目标标签拼接(j,1);
返回;
}
});
});
message+='After:'+JSON.stringify(tagsArray);
document.body.innerHTML=message
谢谢,这在JSFIDLE中确实有效,只是不明白为什么在我的开发代码中它现在删除了每个标记:(谢谢!选择这个,因为它也解决了我在开发代码中的问题。过滤器
出于某种原因删除了我所有的标记对象。