从数组中获得最高角色

我目前有一个数组u._roles,其中填充了来自“581199939464462340”等组的 ID。其次,我有一个字典,其中键是角色 ID,值是名称,例如{key: "581199939464462340", value: "Member"}.


现在我想获取数组的“最高”角色的名称。目前我有这个丑陋的 if 语句,但我认为可以做得更好,但是如何?(数组u._roles是只读的)。


u._roles 可能如下所示:


["5812040340469414946", "581200340469415946", "581209222700597248"]所以“最高”将是“581200340469415946”(第二个如果)。(然后从字典中获取这个id的名字roleMap)


var Rank;


if (u._roles.includes("581199939464462340")) {

    Rank = roleMap["581199939464462340"]; // highest

} else if (u._roles.includes("581200340469415946")) {

    Rank = roleMap["581200340469415946"]; //

} else if (u._roles.includes("581214123334041620")) {

    Rank = roleMap["581214123334041620"]; // 

} else if (u._roles.includes("588976480017448988")) {

    Rank = roleMap["588976480017448988"]; //

} else if (u._roles.includes("581203853635223574")) {

    Rank = roleMap["581203853635223574"]; // 

} else if (u._roles.includes("581209222700597248")) {

    Rank = roleMap["581209222700597248"]; // 

} else if (u._roles.includes("592436270031175681")) {

    Rank = roleMap["592436270031175681"]; // lowest

} else {

    Rank = "";

}

最高并不意味着最高的数字。它只是我喜欢使用的命令。


慕侠2389804
浏览 166回答 3
3回答

哆啦的时光机

我们只是将正确的顺序保存在一个数组中,循环它并检查该值是否包含在角色中。如果是,find将返回它,我们可以将其放入 roleMap[ findvalue]。let order = ["581199939464462340", "581200340469415946", "581214123334041620", "588976480017448988", "581203853635223574", "581209222700597248","592436270031175681"],    roles = ["5812040340469414946", "581200340469415946", "581209222700597248"];let rank = order.find(v => roles.includes(v)); console.log(rank) // => 581200340469415946将代码中的排名行替换为:let rank = roleMap[order.find(v => roles.includes(v))]如果您的订单或订单中的元素数量可能会改变,这将是混乱的,如果没有,您可以像这样保存它们以进行比较。

慕尼黑8549860

我用一些新的见解彻底改变了这个答案。希望这会更有帮助。const rolePriority = {a:1, b:2, c:3, d:4};const u = {"_roles": ['b','c', 'a']};const rankNumber = u._roles.reduce((highest, role) => {&nbsp; const rank = rolePriority[role];&nbsp; return rank < highest ? rank : highest;}, Infinity);const rank = rankNumber === Infinity ? "" : roleMap[rankNumber]

婷婷同学_

首先复制数组,然后按角色属性对其进行排序并取第一个元素。var data = [{&nbsp; &nbsp; name: "Rank 1",&nbsp; &nbsp; role: "5812040340469414946",&nbsp; },&nbsp; {&nbsp; &nbsp; name: "Rank 2",&nbsp; &nbsp; role: "581200340469415946"&nbsp; },&nbsp; {&nbsp; &nbsp; name: "Rank 3",&nbsp; &nbsp; role: "581209222700597248"&nbsp; }];// Copy the source array to avoid mutating it using destructuring itvar copy = [...data];// Sort by role propertyvar rank = copy.sort((a, b) => (+a.role) - (+b.role))[0].name;console.log(rank);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript