在Javascript中将对象数组转换为键值结构
这可能是一个非常基本的JS问题 我只是想弄清楚,是否有相同逻辑的替代方案在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
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;
}, {});
控制台日志(结果)代码>