【发布时间】:2022-01-08 05:21:17
【问题描述】:
有没有办法将不完整的数组与真实数组的来源进行比较并返回缺失的元素?该数组由对象组成,其中一些对象具有一个对象数组。
let incompleteArr =[
{
"name": "Extra Toppings (Small)",
"modifier_options": [{
"name": "Corn",
"price": 0.75
},
{
"name": "Extra mozzarella",
"price": 0.9
},
{
"name": "Onion",
"price": 0.45
}
]
},
{
"name": "Extra Toppings (Large)",
"modifier_options": [{
"name": "Corn",
"price": 1.2
},
{
"name": "Extra Mozzarella",
"price": 1.7
}
]
}
]
}]
let completeArr =[
{
"name": "Extra Toppings (Small)",
"modifier_options": [
{
"name": "Corn",
"price": 0.75
},
{
"name": "Extra mozzarella",
"price": 1.2
},
{
"name": "Extra Anchovies",
"price": 0.7
}
]
},
{
"name": "Extra Toppings (Large)",
"modifier_options": [
{
"name": "Corn",
"price": 1.2
},
{
"name": "Extra mozzarella",
"price": 1.7
}
]
},
{
"name": "Extra Burger Toppings (Small)",
"modifier_options": [
{
"name": "Extra Onion",
"price": 0.5
},
{
"name": "Extra Tomato",
"price": 0.55
},
{
"name": "Extra Cheese",
"price": 0.65
},
{
"name": "Extra Mayo",
"price": 0.3
},
{
"name": "Extra Patty",
"price": 2.5
}
]
},
{
"name": "Extra Burger Toppings (Medium)",
"modifier_options": [
{
"name": "Extra Onion",
"price": 0.6
},
{
"name": "Extra Tomato",
"price": 0.65
},
{
"name": "Extra Cheese",
"price": 0.75
},
{
"name": "Extra Mayo",
"price": 0.4
},
{
"name": "Extra Patty",
"price": 2.9
}
]
},
{
"name": "Extra Burger Toppings (Large)",
"modifier_options": [
{
"name": "Extra Onion",
"price": 0.8
},
{
"name": "Extra Tomato",
"price": 0.9
},
{
"name": "Extra Cheese",
"price": 0.95
},
{
"name": "Extra Mayo",
"price": 0.6
},
{
"name": "Extra Patty",
"price": 3.5
}
]
}
]
期望的结果是返回一个缺失元素的数组。例如,“名称”Extra Toppings (Small) 必须存在于不完整Arr 和完整Arr 中。然后还必须比较“modifier_options”。任何不在不完整Arr 中的modifier_options 都必须推入缺失元素的数组中。
到目前为止我已经尝试过了
let missingMod = gfMods.filter(mod => lvMods.every(mod2 => !mod2.name.includes(mod.name)))
预期的输出是缺少的项目,但我没有从 modifier_options 对象中获取缺少的嵌套数组项目。我有一个想法,我需要遍历数组以检查“名称”是否存在,然后再进行第二次循环以检查 modifier_options 是否都存在。这就是我一直卡住的地方。
[{
name:"Extra Burger Toppings (Small)",
modifier_options: [{
name:"Extra Onion",
price:0.5},
{name:"Extra Tomato",
price:0.55},
{name:"Extra Cheese",
price:0.65},
{name:"Extra Mayo",
price:0.3},
{name:"Extra Patty",
price:2.5}
]},
{name:"Extra Burger Toppings (Medium)",
modifier_options: [{
name:"Extra Onion",
price:0.6},
{name:"Extra Tomato",
price:0.65},
{name:"Extra Cheese",
price:0.75},
{name:"Extra Mayo",
price:0.4},
{name:"Extra Patty",
price:2.9}]
},
{name:"Extra Burger Toppings (Large)",
modifier_options: [{
name:"Extra Onion",
price:0.8},
{name:"Extra Tomato",
price:0.9},
{name:"Extra Cheese",
price:0.95},
{name:"Extra Mayo",
price:0.6},
{name:"Extra Patty",
price:3.5}]
}]
【问题讨论】:
-
lvMods和gfMods分别指的是什么?
标签: javascript multidimensional-array array-difference