Javascript 比较对象数组并删除特定项
及 然后从第二个阵列中移除ralph。我已经创建了一个函数,只检查第一个元素,而不检查子菜单Javascript 比较对象数组并删除特定项,javascript,arrays,comparison,Javascript,Arrays,Comparison,及 然后从第二个阵列中移除ralph。我已经创建了一个函数,只检查第一个元素,而不检查子菜单 arr2 = [ { name: "will", value: 1, submenu: [ { name: "ralph", value: 2 } ] } ] 需要在过滤器之后映射数组。您可以这样
arr2 = [
{
name: "will",
value: 1,
submenu: [
{
name: "ralph",
value: 2
}
]
}
]
需要在过滤器之后映射数组。您可以这样做,还可以添加“prop===‘submenu’”,专门用于检查子菜单内部数组
var arr1=[
{
名称:“将”,
值:“1”
},
{
姓名:“纳尔逊”,
值:“3”
}
];
var arr2=[
{
名称:“将”,
价值:1,
子菜单:[
{
姓名:“拉尔夫”,
价值:2
},
// {
//姓名:“纳尔逊”,
//价值:3
// }
]
}
];
函数过滤器比较程序(arrSecundario){
返回(数组)=>{
返回arrSecundario.filter((其他)=>{
返回other.value==arrAtual.value;
}).长度!=0;
};
}
功能图比较器(arrSecundario){
返回(数组)=>{
Object.keys(arrAtual.forEach)((prop)=>{
if(Array.isArray(arrAtual[prop])){
让propValue=arrAtual[prop].filter(this.filterComparador(arrSecundario));
如果(propValue.length>0){
arrAtual[prop]=propValue.map(this.mapCompariador(this.arrSecundario));
}否则{
删除阵列[prop];
}
}
});
返回阵列;
};
}
var manufactedArray=this.arr2.filter(this.filterComparador(this.arr1))
.map(this.mapparador(this.arr1));
控制台日志(操纵阵列)代码>看起来这可能需要一些递归。如果您有一个工作示例也会有所帮助:根据要删除的arra1
和arr2
的相似键/值,两个数组具有相同的属性,我需要删除不匹配的属性
arr2 = [
{
name: "will",
value: 1,
submenu: [
{
name: "ralph",
value: 2
}
]
}
]
comparador(arrSecundario) {
return (arrAtual) => {
return arrSecundario.filter(function (other) {
return other.value === arrAtual.value;
}).length !== 0;
};
}
this.arr2.filter(this.comparador(this.arr1));