【问题标题】:Accessing an object inside of an array inside an object of arrays访问数组对象内部的数组对象
【发布时间】:2020-09-13 09:09:29
【问题描述】:

所以我有一个数组对象,每个数组包含一个特定对象, 现在我想做的是当我点击任何这些对象以能够选择它以便我可以在 VueJs 中预览它

这是我的对象:

shopitems:{
    pizza:[
      {

        "id": 1,
        "name": "id labore ex et quam laborum",
        "email": "Eliseo@gardner.biz",
        "body": "Margherita",
        "img" : " https://media.onebite.app/62/b2/c5/f7/62b2c5f7-a995-47a6-af1b-64d892692386.jpg",
        "brand" : "pizza",
        "price": "12",
      },
      {

        "id": 2,
        "name": "odio adipisci rerum aut animi",
        "body": "Fresh Veggie",
        "img" : "https://res-2.cloudinary.com/crunchbase-production/image/upload/c_lpad,h_256,w_256,f_auto,q_auto:eco/r6krxkmxkkthsbw9fm9f",
        "brand" : "pizza",
        "price": "30",
      },
     
    ],
    salad:[
      {

        "id":3,
        "name": "id labore ex et quam laborum",
        "email": "Eliseo@gardner.biz",
        "body": "Salad u",
        "img" : "https://nitrocdn.com/KZJKWDkEwMJCwERIlnRsPNdqobwBIlEo/assets/static/optimized/rev-83d0269/wp-content/uploads/2018/05/brazilian-chopped-salad-10-256x256.jpg",
        "brand" : "salad",
        "price": "12",
      },
      {

        "id": 4,
        "name": "odio adipisci rerum aut animi",
        "body": "Salad V",
        "img" : "https://bigoven-res.cloudinary.com/image/upload/d_recipe-no-image.jpg,t_recipe-256/mixed-greens-salad-with-tomato-443eb4.jpg",
        "brand" : "salad",
        "price": "25",     
      },
      
    ],
    
  },

这是我尝试使用的函数


        this.$store.state.eCommerce.shopitems.find((items) =>
         items.forEach((item) => item.id = id))
          return  this.item_data = this.item

请告诉我我做错了什么

【问题讨论】:

  • 分享一个有效的json。

标签: javascript vue.js frontend


【解决方案1】:

如果您尝试访问/修改披萨数组,则您访问的是错误的对象

this.$store.state.eCommerce.shopitems.pizza.find((items) =>
         items.forEach((item) => item.id = id))
          return  this.item_data = this.item

【讨论】:

    【解决方案2】:

    shopitems 是一个对象而不是数组,因此您不能使用 .find()。 你可以这样做 初始化空数组,然后将 shopitems 添加到该数组并使用 find 函数

    `var myArray = []
       myArray.push( this.$store.state.eCommerce.shopitems)
       myArray.find((items) =>
        items.forEach((item) => item.id = id))return  this.item_data = this.item
    this.$store.state.eCommerce.shopitems = myArray[0] ? myArray[0] : {}`
    

    【讨论】:

      【解决方案3】:

      将对象转换为数组可能是个好主意。有多种方法可以实现这一目标。

      let objectKeys=Object.keys(yourObject);
      let yourObjectArray=[];
      
      objectKeys.forEach(x=>{
            yourObjectArray.push(yourObject[x])
       });
      

      或许

      让 yourObjectArray=[...yourObject]

      一旦你得到了数组,你就可以像往常一样使用 filter()

      【讨论】:

        猜你喜欢
        • 2020-10-23
        • 1970-01-01
        • 2021-02-28
        • 2021-08-25
        • 2015-05-04
        • 2015-03-20
        • 1970-01-01
        相关资源
        最近更新 更多