我正在处理大量对象。我将数据结构简化为以下内容。每个对象都有一个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"}]
我需要对任何具有type
数组中的id's
的匹配ID使用“ lookup”对象。我需要从对象中删除该属性。查找应该是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"]}]
我要挂断的部分是不提前知道对象键名称,也不知道如何使用lookup
对象的type属性为该键搜索对象条目。我最初的想法是使用Object.values
,但是如果使用该属性,我不确定如何删除该对象属性。
答案 0 :(得分:1)
对于mongodb-replicaset.mongodb-replicaset.svc.cluster.local
中的每个对象,请检查ID是否与lookup
数组中的对象匹配。如果匹配,则使用Object.keys从arr
数组中的特定对象获取所有键。
伪代码
arr
数组中获取该对象。使用Object.keys获取键数组,例如,该数组现在为
['id','array0','array1']
现在迭代此数组,并使用此数组中的元素作为键名 &检查该值是否再次为数组。 例如
arr
将产生`{id: "12345",
array1: ["Banana", "Apple"],
array2: ["Orange", "Strawberry"]
}['array0']`
。在此过程中,使用["Banana", "Apple"]
检查类型是否存在,如果不存在,则使用indexOf
从对象中删除键和值
delete
注意:在循环内修改数组不是一个好主意