![](/img/trans.png)
[英]How to convert tree having nodes stored as key-value objects to a tree structure having nodes stored as array of objects in Javascript?
[英]Convert Array of Objects to Key Value Structure in Javascript
这可能是一个非常基本的 JS 问题。
我只想弄清楚是否可以有相同逻辑的任何替代解决方案。
var testArray =[{Name:"Defg",Age:"17",Level:"four"},
{Name:"Abcd",Age:"12",Level:"four"},
{Name:"Hijk",Age:"11",Level:"two"},
{Name:"Pqrs",Age:"21",Level:"three"},
{Name:"Vwxy",Age:"15",Level:"three"}];
getLevelMap: function (testArray) {
var levelMap = [];
var that = this;
testArray.forEach(function (item) {
if (!levelMap.includes(item.Level)) {
levelMap.push(item.Level);
var generalDetails = [item];
levelMap[item.Level] = generalDetails;
} else {
var existingLevel = levelMap[item.Level];
existingLevel = existingLevel.push(item);
};
});
levelMap.sort();
return levelMap;
}
调用 getLevelMap(testArray) 应该给我以下结果:
(3) ["four", "three", "two", four: Array(2), two: Array(1), three: Array(2)]
0: "four"
1: "three"
2: "two"
four: Array(2)
0: {Name: "Defg", Age: "17", Level: "four"}
1: {Name: "Abcd", Age: "12", Level: "four"}
length: 2
__proto__: Array(0)
three: Array(2)
0: {Name: "Pqrs", Age: "21", Level: "three"}
1: {Name: "Vwxy", Age: "15", Level: "three"}
length: 2
__proto__: Array(0)
two: Array(1)
0: {Name: "Hijk", Age: "11", Level: "two"}
提前致谢。
您可以使用Array.reduce
简化代码:
var testArray =[{Name:"Defg",Age:"17",Level:"four"}, {Name:"Abcd",Age:"12",Level:"four"}, {Name:"Hijk",Age:"11",Level:"two"}, {Name:"Pqrs",Age:"21",Level:"three"}, {Name:"Vwxy",Age:"15",Level:"three"}]; var result = testArray.reduce((c, v) => { c[v.Level] = (c[v.Level] || []).concat([v]); return c; }, {}); console.log(result);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.