如何将以下对象数组解析为以下格式以进行显示

用户3494996

这是输入:

[{
    "PSpace": "D1",
    "Category": "C1",
    "SubCategory": "S1",
    "Pname": "P1"
}, {
    "PSpace": "D1",
    "Category": "C2",
    "SubCategory": "S2",
    "Pname": "P2"
}, {
    "PSpace": "D1",
    "Category": "C2",
    "SubCategory": "S3",
    "Pname": "P6"
}, {
    "PSpace": "D2",
    "Category": "C6",
    "SubCategory": "S7",
    "Pname": "P7"
}, {
    "PSpace": "D2",
    "Category": "C6",
    "SubCategory": "S7",
    "Pname": "P8"
}]

期望的输出

在单个阵列中,每个部门应具有一个相关类别的阵列,每个类别应具有一个相关子类别的阵列,并且每个子类别应具有一个相关产品的阵列

这样我就可以遍历单个阵列来展示所连接的展示产品

在此处输入图片说明

妮娜·斯科茨(Nina Scholz)

您可以使用组更改来检查最后一项,并为该对象的给定键使用替换对象。

var data = [{ PSpace: "D1", Category: "C1", SubCategory: "S1", Pname: "P1" }, { PSpace: "D1", Category: "C2", SubCategory: "S2", Pname: "P2" }, { PSpace: "D1", Category: "C2", SubCategory: "S3", Pname: "P6" }, { PSpace: "D2", Category: "C6", SubCategory: "S7", Pname: "P7" }, { PSpace: "D2", Category: "C6", SubCategory: "S7", Pname: "P8" }],
    names = { PSpace: "Space", Category: "Category", SubCategory: "Sub Category", Pname: "Name" },
    result = data.map(function (o) {
        var all = false,
            r = [];

        Object.keys(o).forEach(function (k, i) {
            if (i < 3) {
                if (all || this[k] !== o[k]) {
                    r.push(names[k] + ' ' + o[k]);
                    this[k] = o[k];
                    all = true;
                }
            } else {
                r.push(names[k] + ' ' + o[k]);
            }
        }, this);
        return r;
    }, {});

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

您可以将未规范化的数据转换为树对象。

var data = [{ PSpace: "D1", Category: "C1", SubCategory: "S1", Pname: "P1" }, { PSpace: "D1", Category: "C2", SubCategory: "S2", Pname: "P2" }, { PSpace: "D1", Category: "C2", SubCategory: "S3", Pname: "P6" }, { PSpace: "D2", Category: "C6", SubCategory: "S7", Pname: "P7" }, { PSpace: "D2", Category: "C6", SubCategory: "S7", Pname: "P8" }],
    names = { PSpace: "Space", Category: "Category", SubCategory: "Sub Category", Pname: "Name" },
    result = data.reduce(function (t, o) {
        var path = Object.keys(o),
            last = path.pop();

        path.reduce(function (r, k, i, kk) {
            return r[o[k]] = r[o[k]] || (i < kk.length - 1 ? {} : []);
        }, t).push(o[last]);
        return t;
    }, {});

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章