数组到对象JSON

时间:2016-07-29 16:47:39

标签: javascript jquery json

我有一个这样的数组:

[{
    mercado: "CAM",
    region: "CAM Uno",
    Cliente: "Jonhy"
}, {
    mercado: "CAM",
    region: "CAM Uno",
    Cliente: "Alex"
}, {
    mercado: "CAM",
    region: "CAM Dos",
    Cliente: "Jullian"
}, {
    mercado: "NAM",
    region: "OCI",
    Cliente: "Pascal"
}, {
    mercado: "NAM",
    region: "FLI",
    Cliente: "Sofia"
}, {
    mercado: "NAM",
    region: "FLI",
    Cliente: "Priya"
}];

我想要一个像:

这样的对象
[{
    mercado: "CAM",
    region: [{
        nombre: "CAM Uno",
        Cliente: ["Jonhy", "Alex"]
    }, {
        nombre: "CAM Dos",
        Cliente: ["Jullian"]
    }]
}, {
    mercado: "NAM",
    region: [{
        nombre: "OCI",
        Cliente: ["Pascal"]
    }, {
        nombre: "FLI",
        Cliente: ["Sofia", "Priya"]
    }]
}];

有可能吗?

1 个答案:

答案 0 :(得分:2)

您可以使用对象来引用结果集中的插入项。

var data = [{ mercado: "CAM", region: "CAM Uno", Cliente: "Jonhy" }, { mercado: "CAM", region: "CAM Uno", Cliente: "Alex" }, { mercado: "CAM", region: "CAM Dos", Cliente: "Jullian" }, { mercado: "NAM", region: "OCI", Cliente: "Pascal" }, { mercado: "NAM", region: "FLI", Cliente: "Sofia" }, { mercado: "NAM", region: "FLI", Cliente: "Priya" }],
    grouped = [];

data.forEach(function (a) {
    var o = { mercado: a.mercado, region: [] };
    if (!this[a.mercado]) {
        this[a.mercado] = { region: o.region, };
        grouped.push(o);
    }
    if (!this[a.mercado][a.region]) {
        this[a.mercado][a.region] = { nombre: a.region, Cliente: [] };
        this[a.mercado].region.push(this[a.mercado][a.region]);
    }
    this[a.mercado][a.region].Cliente.push(a.Cliente);
}, Object.create(null));
  
console.log(grouped);