在Javascript中将对象数组转换为键值结构

在Javascript中将对象数组转换为键值结构,javascript,arrays,Javascript,Arrays,这可能是一个非常基本的JS问题 我只是想弄清楚,是否有相同逻辑的替代方案 var testArray =[{Name:"Defg",Age:"17",Level:"four"}, {Name:"Abcd",Age:"12",Level:"four"}, {Name:"Hijk",Age:"11",Level

这可能是一个非常基本的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"}

提前感谢。

您可以使用以下方法简化代码:

var testArray=[{Name:“Defg”,Age:“17”,Level:“4”},
{姓名:“Abcd”,年龄:“12”,级别:“4”},
{姓名:“Hijk”,年龄:“11”,级别:“2”},
{姓名:“Pqrs”,年龄:“21”,级别:“三”},
{姓名:“Vwxy”,年龄:“15”,级别:“三”};
var结果=测试结果减少((c,v)=>{
c[v.Level]=(c[v.Level]| |[])。concat([v]);
返回c;
}, {});
控制台日志(结果)