javascript - 返回包含过滤嵌套数组的新对象

标签 javascript list menu

我基本上有一个菜单系统,用户单击商店名称,它就会显示该商店的信息。

这有效。

现在,我还有一个过滤器面板,用户可以选择根据单击的过滤器按钮对菜单列表进行排序。我一生都无法弄清楚这一点。

如何使用数组函数创建一个数组,该数组返回一个也具有更新菜单的新对象?

burgers.forEach(function(e){
    e.menu.filter (el => el.itemPrice < 3).map(el => {
        if(el.itemPrice < 3){
            console.log(el);
        }
    });
})

当我记录(e)时,所有汉堡商店的菜单项都少于 5 个。然后我想创建一个新对象,其中包含原始对象的所有信息,但菜单部分应修改为仅显示较少的项目超过 5 美元。

对象:

let burgers = [
    {
    "storeSpace": "Open Space",
    "storeName": "Mcdonalds",
    "menu": [
        {
            "itemImage": "https://www.mcdonalds.com/is/image/content/dam/ca/nfl/web/nutrition/products/header/en/mcdonalds-hamburger.jpg?$Product_Desktop$",
            "itemName": "Hamburger",
            "itemPrice": 2.99,
        },
       {
            "itemImage": "https://www.mcdonalds.com/is/image/content/dam/ca/nfl/web/nutrition/products/header/en/mcdonalds-hamburger.jpg?$Product_Desktop$",
            "itemName": "Hamburger",
            "itemPrice": 3.99,
        },
        {
            "itemImage": "https://www.mcdonalds.com/is/image/content/dam/ca/nfl/web/nutrition/products/header/en/mcdonalds-hamburger.jpg?$Product_Desktop$",
            "itemName": "Hamburger",
            "itemPrice": 6.99,
        },
        ]
    },
]

如果我再次调用该对象,它确实包含低于 5 美元的项目,但它还显示我不想要的所有其他菜单项。它应该只显示前 2 个,但它会返回整个项目列表。

这是一张图片:/image/zZE45.png 正如您所看到的,当时我将最大金额设置为 3 美元,对象中只有 1 个项目低于 3 美元,但它返回整个菜单列表。这就是为什么我需要以某种方式更新当前菜单项。

最佳答案

这里是代码:

const newBurgersMenu = burgers.map(function(burger){
    const newMenu = burger.menu.filter(function(item){
    if(item.itemPrice < 5){
        return item 
    }
  })
  return newMenu;
})

// First way to create new burgers
const newBurgersObj = [{...burgers[0], menu:newBurgersMenu[0]}]
// OR Second way to create new burgers
const newBurgers = burgers.slice()
newBurgers[0].menu = newBurgersMenu

console.log({newBurgersObj})
console.log({newBurgers})

这就是您要找的吗?另链接到 jsfiddle https://jsfiddle.net/vrheL4tw/1/ 希望我回答了你的问题

关于javascript - 返回包含过滤嵌套数组的新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59315491/

相关文章:

javascript - jQuery insideWidth 无法与 } else { 一起使用而不进行页面刷新

javascript - window.open() 应该在同一个选项卡中打开链接

Python 相当于 Scala 的 exists() 函数?

python - 在 Python2.7 中将列表转换为字典的最佳方法是什么

wordpress - 将菜单项添加到 wordpress 的仪表板菜单中

css - 移动菜单 z-index 问题?

c# - 如何避免在 .NET Windows 窗体中创建重复的窗体?

javascript - 将 DIV 插入 Google map 图层

javascript - 方法作为参数类型

c++ - 如何从链表中删除节点?