为了账号安全,请及时绑定邮箱和手机立即绑定

Vue.js - 在计算属性中迭代 json 以创建新对象

Vue.js - 在计算属性中迭代 json 以创建新对象

莫回无 2023-07-14 10:09:06
这是 vue.js 中的计算属性:shopCart() {      var scart = [],        group,        node;      scart.push({        payMethod: 0,        transactionReference: "",        RoomNumber: 0,        addressId: 0,        deliveryMinutes: 0,        comment: "",        posList: [],      });      for (var x = 0; x < this.items.length; x++) {        group = this.items[x].selectedOptions;        scart[0].posList.push({          articleId: this.items[x].id,          quantity: this.items[x].quantity,          singlePrice: this.items[x].price,          variantList: [],          parent: true,          name: this.items[x].name,        });        for (var y = 0; y < group.length; y++) {          node = group[y].options;          for (var z = 0; z < node.length; z++) {            scart[0].posList[0].variantList += node[z].id + ",";          }        }      }      scart = scart.map(function (e) {        return JSON.stringify(e);      });      scart = scart.join(",");      return scart;    },它写入以下对象:{  "payMethod": 0,  "transactionReference": "",  "RoomNumber": 0,  "addressId": 0,  "deliveryMinutes": 0,  "comment": "",  "posList": [    {      "articleId": 20001,      "quantity": 1,      "singlePrice": 8.99,      "variantList": "2001,4001,5001,2003,4003,",      "parent": true,      "name": "Fisch Filet"    },    {      "articleId": 20002,      "quantity": 1,      "singlePrice": 8.99,      "variantList": "",      "parent": true,      "name": "Cheese Burger"    }  ]}我需要这个:{  "payMethod": 0,  "transactionReference": "",  "RoomNumber": 0,  "addressId": 0,  "deliveryMinutes": 0,  "comment": "",  "posList": [    {      "articleId": 20001,      "quantity": 1,      "singlePrice": 8.99,      "variantList": "2001,4001,5001,",      "parent": true,      "name": "Fisch Filet"    },最后一个嵌套循环仅将我的字符串写入第一次出现的“variantList”中。我似乎无法找到正确的方法来解决上一个循环中“variantList”的出现问题。任何人都可以指出我正确的方向吗?
查看完整描述

1 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

根据输入项目和所需结果,我建议使用以下map方法解决方案:


shopCart() {

      var scart = [],

        group,

        node;

      scart.push({

        payMethod: 0,

        transactionReference: "",

        RoomNumber: 0,

        addressId: 0,

        deliveryMinutes: 0,

        comment: "",

        posList: this.items.map(item=>{

                       item={

                       articleId: item.id,

                         quantity: item.quantity,

                         singlePrice:item.price,

                                            

                      variantList:item.selectedOptions.map(opt=>opt.options[0].id).join(),

                         parent: true,

                         name: item.name,

                       }; 

                     return item;

                   }) ,

      });


return scart;


}


查看完整回答
反对 回复 2023-07-14
  • 1 回答
  • 0 关注
  • 144 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信