Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 比较对象数组并删除特定项_Javascript_Arrays_Comparison - Fatal编程技术网

Javascript 比较对象数组并删除特定项

Javascript 比较对象数组并删除特定项,javascript,arrays,comparison,Javascript,Arrays,Comparison,及 然后从第二个阵列中移除ralph。我已经创建了一个函数,只检查第一个元素,而不检查子菜单 arr2 = [ { name: "will", value: 1, submenu: [ { name: "ralph", value: 2 } ] } ] 需要在过滤器之后映射数组。您可以这样

然后从第二个阵列中移除ralph。我已经创建了一个函数,只检查第一个元素,而不检查子菜单

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));