【发布时间】:2020-06-30 01:52:33
【问题描述】:
给定一个嵌套的餐点数组,我们正在尝试删除基于 id 和 mealType 组合的嵌套对象。我们从 2 个嵌套的 breakfast 餐开始,如果两者都被删除,我们正在尝试完全删除父键,因为它现在是空的。
这是我们目前的代码:
var mealsList = {
"menuGroup1": [
{
"id": "b1",
"menuId": "FRPUbgmMiaNH",
"title": "Eggs",
"mealType": "breakfast"
}, {
"id": "b2",
"menuId": "FRPUbgmMiaNH",
"title": "Sandwich",
"mealType": "breakfast"
}
],
"menuGroup2": [
{
"id": "b2",
"menuId": "FRPUbgmMiaNH",
"title": "Fruits",
"mealType": "snack"
}
]
};
console.log(mealsList);
const removeItem = (id, mealType) => {
// pseudocode
// mealsList.*.where("id" == id && "mealType" == mealType).remove();
}
// Remove breakfast with id and meal_type
// removeItem(id, mealType)
removeItem('b1', 'breakfast');
console.log('removed b1 breakfast, mealsList should only contain b2 object');
console.log(mealsList);
removeItem('b2', 'breakfast');
console.log('removed b2 breakfast, mealsList should only contain menuGroup2, as menuGroup1 is now empty');
console.log(mealsList);
问题是我们试图在不明确传递menuGroupX 的情况下删除removeItem 中的嵌套餐对象,相反,我们试图基于id 和@987654330 定位嵌套的mealsList 对象@。伪代码使用* 来表明这一点。
console.log 语句显示了mealsList 应如何呈现在它们下的预期结果。
我们正在寻找一种简短而甜蜜的东西,最好是单衬里,即使这意味着为了简单起见使用 lodash 解决方案。
Here is the fiddle(JS 选项卡中的代码)
知道在removeItem 中放置什么而不是伪代码以使mealsList 删除特定项目吗?
【问题讨论】:
-
我不知道将 JS 对象创建为 JSON 是否是一种好习惯。
标签: javascript arrays lodash