how can I do a report grouped by rows in angularjs with ng-repeat

0

How can I do to have a result like the second table?

  

Appointment in block   This is my json

[{id: "211", Pedido_id: "50", Producto_id: "17", Proveedor_id: "3", Cantidad: "25",…},…]
0
:
{id: "211", Pedido_id: "50", Producto_id: "17", Proveedor_id: "3", Cantidad: "25",…}
1
:
{id: "212", Pedido_id: "50", Producto_id: "15", Proveedor_id: "3", Cantidad: "100",…}
2
:
{id: "213", Pedido_id: "50", Producto_id: "11", Proveedor_id: "8", Cantidad: "255",…}
Cantidad
:
"255"
Pedido_id
:
"50"
PrecioUnitario
:
"125.00"
Producto
:
"chivas 25"
Producto_id
:
"11"
Proveedor_id
:
"8"
Total
:
"31875.00"
id
:
"213"
proveedor
:
"socios2"
    
asked by Fmcv Mcv 24.07.2017 в 01:29
source

1 answer

0

You can categorize the objects of your array by one of its keys in the following way:

function mapByField(collection, fieldName){

    var collectionIdx = collection.length || 0;
    var result = {};

    while(collectionIdx--){
        var obj = collection[collectionIdx];

        if(!result[obj[fieldName]]){
            result[obj[fieldName]] = [];
        }

        result[obj[fieldName]].push(obj);
    }

    return result;
}

Usage:

var data = [
    {id: 1, proveedor:'prov1', precio: 1},
    {id: 2, proveedor:'prov1', precio: 24},
    {id: 3, proveedor:'prov2', precio: 54},
    {id: 4, proveedor:'prov2', precio: 7},
    {id: 5, proveedor:'prov2', precio: 87},
    {id: 6, proveedor:'prov3', precio: 24},
    {id: 7, proveedor:'prov4', precio: 23},
    {id: 8, proveedor:'prov4', precio: 89}
];

var res = mapByField(data, 'proveedor');

Result:

{
    prov1: [...], //ids: 1,2
    prov2: [...], //ids: 3,4,5
    prov3: [...], //ids: 6
    prov4: [...], //ids: 7,8
}
    
answered by 24.07.2017 / 11:13
source