【发布时间】:2019-06-25 21:24:53
【问题描述】:
首先,我是 Javascript、ES6 等的新手,我来自 Java 背景。 我有一个复杂的 javascript 数组结构(下面给出的示例), 我正在尝试将此数组转换为映射(类似于 Java 的键值对类型),键是权限名称(例如 KEY-1、KEY-2、KEY-3、KEY-4、KEY- 5 关于下面的 javascript 数组示例),而 value 是实际权限的逗号分隔值。我可以通过通过嵌套数组循环 b 来实现它,但是循环是我在这里试图避免的,并且想要使用 map()/reduce()/filter()
以下是地图应如何包含数据的示例。由于 KEY-2 存在于两个数组中,因此它们将被覆盖为一个(这非常好)
KEY-1 = ["Roles.Create","Roles.Edit"]
KEY-2 = ["API-Admin.Create","API-Admin.Edit","API-Admin.Read"]
KEY-3 = ["Roles.Create","Roles.Edit"]
KEY-4 = ["Users.Read"]
KEY-5 = ["Roles.Create","Roles.Edit"]
Javascript 数组
const teamArr = [
{
"name":"Team1",
"accountId":"Billing",
"teamId":"12345",
"permissions": {
"KEY-1": [
"Roles.Create",
"Roles.Edit"
],
"KEY-2": [
"API-Admin.Create",
"API-Admin.Edit",
"API-Admin.Read"
],
"KEY-3": [
"Roles.Create",
"Roles.Edit"
]
}
},
{
"name":"Team2",
"accountId":"Sales",
"teamId":"6789",
"permissions": {
"KEY-4": [
"Users.Read"
],
"KEY-2": [
"API-Admin.Create",
"API-Admin.Edit",
"API-Admin.Read"
],
"KEY-5": [
"Roles.Create",
"Roles.Edit"
]
}
}
]
KEY-1、KEY-2、KEY-3、KEY-4、KEY-5 等都是动态生成的,所以我不能将这些键名硬编码到我的代码中(如 KEY-1、KEY-2 等)。 )
我关注了这个帖子https://www.freecodecamp.org/news/15-useful-javascript-examples-of-map-reduce-and-filter-74cbbb5e0a1f/ 以下是我尝试过的,但我想,我正在努力在复杂的 javascript 数组上正确使用 sort()/reduce()。我更喜欢普通的 Javascript/ES6 解决方案(没有 JQuery pls)。
const sorted = test.sort((a, b) => a.permissions - b.permissions);
// Using reduce:
dict = sorted.reduce(
(dict, el, index) => (dict[el.permissions] = sorted.length - index, dict),
{}
);
console.log(dict)
这里的任何帮助将不胜感激。谢谢
【问题讨论】:
标签: javascript arrays object ecmascript-6