这是输入:
[{
"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"
}]
期望的输出
在单个阵列中,每个部门应具有一个相关类别的阵列,每个类别应具有一个相关子类别的阵列,并且每个子类别应具有一个相关产品的阵列
这样我就可以遍历单个阵列来展示所连接的展示产品
您可以使用组更改来检查最后一项,并为该对象的给定键使用替换对象。
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] 删除。
我来说两句