Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Object_Ecmascript 6 - Fatal编程技术网

Javascript 如果元素位于另一个对象数组中,则删除对象数组中包含数组的对象属性

Javascript 如果元素位于另一个对象数组中,则删除对象数组中包含数组的对象属性,javascript,arrays,object,ecmascript-6,Javascript,Arrays,Object,Ecmascript 6,我正在处理大量对象。我已将我的数据结构简化为以下内容。每个对象都有一个id,每个id都有0到4个与其关联的数组。数组名称是动态生成的,最多有2个元素,可以是基于其他要求的任意数量的名称。我的初始对象如下所示: const arr = [{id: "12345", array1: ["Banana", "Apple"], array2: ["Orange", "Strawberry"]}, {id: "12345", array0: ["Potato", "Tomato

我正在处理大量对象。我已将我的数据结构简化为以下内容。每个对象都有一个
id
,每个
id
都有0到4个与其关联的数组。数组名称是动态生成的,最多有2个元素,可以是基于其他要求的任意数量的名称。我的初始对象如下所示:

const arr = [{id: "12345", array1: ["Banana", "Apple"], array2: ["Orange", "Strawberry"]}, 
             {id: "12345", array0: ["Potato", "Tomato"]},           
             {id: "54321", array0: ["Kiwi", "Apple"], array1: ["Potato", "Onion"]},
             {id: "54321", array2: ["Orange", "Tomato"], array0: ["Kiwi", "Banana"]},
             {id: "13579", array1: ["Banana", "Apple"], array2: ["Grapefruit", "Onion"]},
             {id: "13579", array1: ["Potato", "Banana"], array2: ["Orange", "Pepper"]}]
我有一个“查找”对象数组。每个对象都有一个
id
和一个
type

const lookup = [{id: "12345", type: "Banana"},
                {id: "12345", type: "Kiwi"},
                {id: "12345", type: "Apple"},
                {id: "54321", type: "Strawberry"} 
                {id: "54321", type: "Tomato"},
                {id: "54321", type: "Banana"},
                {id: "13579", type: "Tomato"},
                {id: "13579", type: "Grapefruit"}]
我需要将“lookup”对象用于在任何相应的
id的
数组中具有
类型的任何匹配id。我需要从对象中删除该属性。查找应该是1:1,所以我得到的对象数组看起来像这样

const result = [{id: "12345", array2: ["Orange", "Strawberry"]}, 
                {id: "12345", array0: ["Potato", "Tomato"]},           
                {id: "54321", array0: ["Kiwi", "Apple"], array1: ["Potato", "Onion"]},
                {id: "54321"},
                {id: "13579", array1: ["Banana", "Apple"]},
                {id: "13579", array1: ["Potato", "Banana"], array2: ["Orange", "Pepper"]}]

我要挂断的部分是,事先不知道对象键的名称,以及如何使用
查找
对象的type属性在对象条目中搜索该键。我最初的想法是使用
Object.values
,但是如果我使用它,我不确定如何删除Object属性。

对于
查找中的每个对象
检查
arr
数组中的id是否匹配。如果匹配,则使用object.keys从
arr
数组中的特定对象获取所有键

伪码

  • 如果id在两个数组中都匹配,则从
    arr
    数组中获取该对象
  • 使用Object.keys获取密钥数组,例如,现在将创建该数组

    ['id'、'array0'、'array1']

  • 现在迭代该数组并使用该数组中的元素作为键名(&U) &再次检查该值是否为数组。 比如说

    `{id: "12345",
        array1: ["Banana", "Apple"],
        array2: ["Orange", "Strawberry"]
      }['array0']` 
    
    将生产
    [“香蕉”、“苹果”]
    。在此过程中,使用
    indexOf
    检查类型是否存在,如果不存在,则使用
    delete
    从对象中删除键和值

  • const arr=[{
    身份证号码:“12345”,
    阵列1:[“香蕉”、“苹果”],
    array2:[“橙色”、“草莓色”]
    },
    {
    身份证号码:“12345”,
    数组0:[“土豆”、“西红柿”]
    },
    {
    id:“54321”,
    阵列0:[“猕猴桃”、“苹果”],
    数组1:[“土豆”、“洋葱”]
    },
    {
    id:“54321”,
    array2:[“橙色”、“西红柿”],
    数组0:[“猕猴桃”、“香蕉”]
    },
    {
    身份证号码:“13579”,
    阵列1:[“香蕉”、“苹果”],
    阵列2:[“葡萄柚”、“洋葱”]
    },
    {
    身份证号码:“13579”,
    阵列1:[“土豆”、“香蕉”],
    array2:[“橙色”、“胡椒色”]
    }
    ]
    常量查找=[{
    身份证号码:“12345”,
    类型:“香蕉”
    },
    {
    身份证号码:“12345”,
    类型:“猕猴桃”
    },
    {
    身份证号码:“12345”,
    类型:“苹果”
    },
    {
    id:“54321”,
    类型:“草莓”
    },
    {
    id:“54321”,
    类型:“番茄”
    },
    {
    id:“54321”,
    类型:“香蕉”
    },
    {
    身份证号码:“13579”,
    类型:“番茄”
    },
    {
    身份证号码:“13579”,
    类型:“葡萄柚”
    }
    ]
    设newArray=[];
    forEach(函数(项、索引){
    arr.forEach(函数(arrId,index1){
    if(item.id==arrId.id){
    Object.keys(arrId).forEach(函数(elem){
    if(Array.isArray(arrId[elem])&&arrId[elem].indexOf(item.type)!=-1){
    删除arr[index1][elem]
    }
    })
    }
    })
    })
    控制台日志(arr)