按Java中的相关值将Json分组

编程入门 行业动态 更新时间:2024-10-11 01:10:58

按<a href=https://www.elefans.com/category/jswz/34/1770091.html style=Java中的相关值将Json分组"/>

按Java中的相关值将Json分组

此JSON作为订单提供,其中包含与vendorId相关的多个产品。我希望能够将其分组为一个独立的数组集,而不是将所有列为一组较长的产品。我该如何实现?

我的代码

    let order =     {
        "products": [
            {
                "_id": "5e989346731e4d11c4a06331",
                "productId": "5e9ee6ad8ac51f4654846552",
                "vendorId": "5e8547fb14033339a86cc349",
                "name": "Laterral",
                "price": 1000,
                "count": 2

            },
            {
                "_id": "5e990589823c501e640be183",
                "productId": "5e989346731e4d11c4a06331",
                "vendorId": "5e8547fb14033339a86cc349",
                "name": "ANother Product",
                "price": 12453,
                "count": 3

            },
            {
                "_id": "5e9ee6ad8ac51f4654846552",
                "productId": "5e989346731e4d11c4a06331",
                "vendorId": "5e8547fb14033339a86cc309",
                "name": "ANother Product",
                "price": 12453,
                "count": 3
            },
            {
                "_id": "5e9904c3cd559006fc2b92b3",
                "productId": "5e989346731e4d11c4a06331",
                "vendorId": "5e8547fb14033339a86cc309",
                "name": "ANother Product",
                "price": 12453,
                "count": 3
            }
        ],
        "address":"Colonel 10",
        "amount":"234555",
        "transaction_id":"3334hdd",
        "status":"Not processed"
    }

    let products = order.products
    //console.log(products)
     arr = []
    products.map(product => {
      vendorId = product.vendorId
      price = product.price
      quantity = product.count
      productId = product.productId

      if(vendorId == product.vendorId) {
        arr.vendorId = vendorId
        arr.productId = productId
        arr.price = price
        arr.count = quantity
        arr.total = price * quantity; //arr.reduce((cum, xtr) => cum + xtr.price * xtr.count,0)
        tem = "========= \n " +arr.count+" Products ordered from this vendor " + vendorId + "\n"  + arr.productId +" for "+ arr.price + " Total of " + arr.total;

      }

      console.log(arr)
    })

This is my output

    [
      vendorId: '5e8547fb14033339a86cc349',
      productId: '5e9ee6ad8ac51f4654846552',
      price: 1000,
      count: 2,
      total: 2000
    ]
    [
      vendorId: '5e8547fb14033339a86cc349',
      productId: '5e989346731e4d11c4a06331',
      price: 12453,
      count: 3,
      total: 37359
    ]
    [
      vendorId: '5e8547fb14033339a86cc309',
      productId: '5e989346731e4d11c4a06331',
      price: 12453,
      count: 3,
      total: 37359
    ]
    [
      vendorId: '5e8547fb14033339a86cc309',
      productId: '5e989346731e4d11c4a06331',
      price: 12453,
      count: 3,
      total: 37359
    ]

This is my intended output

    "order":{
   "vendor":[
      {
         "productId":"5e9ee6ad8ac51f4654846552",
         "price":1000,
         "count":2,
         "total":2000
      },
      {
         "productId":"5e989346731e4d11c4a06331",
         "price":12453,
         "count":3,
         "total":37359
      }
   ],
   "vendorId":"5e8547fb14033339a86cc349",
   "gtotal":39359,
"vendor":[
   {
      "productId":"5e989346731e4d11c4a06331",
      "price":12453,
      "count":3,
      "total":37359
   },
   {
      "productId":"5e989346731e4d11c4a06331",
      "price":12453,
      "count":3,
      "total":37359
   }
],
"vendorId":"5e8547fb14033339a86cc309",
"gtotal":‭74718‬
}

什么是最好的方法。

回答如下:

这不会产生您所需的输出,因为您所需的输出完全无效

但是这接近我想您想要的

let order={"products":[{"_id":"5e989346731e4d11c4a06331","productId":"5e9ee6ad8ac51f4654846552","vendorId":"5e8547fb14033339a86cc349","name":"Laterral","price":1000,"count":2},{"_id":"5e990589823c501e640be183","productId":"5e989346731e4d11c4a06331","vendorId":"5e8547fb14033339a86cc349","name":"ANother Product","price":12453,"count":3},{"_id":"5e9ee6ad8ac51f4654846552","productId":"5e989346731e4d11c4a06331","vendorId":"5e8547fb14033339a86cc309","name":"ANother Product","price":12453,"count":3},{"_id":"5e9904c3cd559006fc2b92b3","productId":"5e989346731e4d11c4a06331","vendorId":"5e8547fb14033339a86cc309","name":"ANother Product","price":12453,"count":3}],"address":"Colonel 10","amount":"234555","transaction_id":"3334hdd","status":"Not processed"};
const products = order.products;


const vendor = products.reduce((acc, {productId, price, count, vendorId}) => {
    let total = price * count;
    let existing_vendor = acc.find(i => i.vendorId === vendorId);
    if (!existing_vendor) {
        acc.push({products:[{productId, price, count, total}], vendorId, gtotal:total});
    } else {
        existing_vendor.products.push({productId, price, count, total});
        existing_vendor.gtotal += total;
    }
    return acc
}, []);

const result = {order: {vendor}};
console.log(result);

更多推荐

按Java中的相关值将Json分组

本文发布于:2024-05-07 09:58:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1755716.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Java   Json

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!