2 回答

TA貢獻1839條經(jīng)驗 獲得超15個贊
你能試試這個嗎?
let order = ['ADMIN', 'MODERATOR', 'MEMBER'];
order.forEach(function(orderItem) {
users.forEach(function(value, key, map) {
if (orderItem === value.pawn) {
userlistHTML += '<li><div class="userlist_pawn'+ value.pawn +'"></div><divclass="userlist_name">' + value.name + '</div></li>';
}
})
})

TA貢獻1802條經(jīng)驗 獲得超10個贊
這就是我所指的 - 獲取用戶列表/按角色對其進行排序/迭代以獲取字符串/用字符串替換innerHTML。
請注意,我使用對象文字來確定用戶角色的相對順序- 因為所需的結(jié)果不是直接按字母順序排列的。這用于通過引用相關(guān)用戶角色的值來確定用戶的排序順序(而不是簡單地按字母順序?qū)?shù)組進行排序)。
也不是用于排序的一個襯里 - 這可以分成一個單獨的命名函數(shù),因為另一個函數(shù)需要它(并且排序順序也可以修改,以便它對不同的用戶顯示不同的內(nèi)容。
我還使用了 li 上的類 - 并用它來給出分組之間的間距。
const users = [
{name: 'Arthur' , role: "Member"},
{name: 'Susan' , role: "Moderator"},
{name: 'Bob' , role: "Admin"},
{name: 'Sylvia' , role: "Member"},
{name: 'Gavin' , role: "Moderator"},
{name: 'Stuart' , role: "Admin"}
]
const roleOrder = {
Admin: 1,
Moderator: 2,
Member: 3
};
function Userlist(users) {
const id = "#userlist";
let userlistHTML ='';
const sortedUsers = users.sort(function(a, b){ return roleOrder[a.role] == roleOrder[b.role] ? 0 : +(roleOrder[a.role] > roleOrder[b.role]) || -1;});
sortedUsers.forEach(function(user) {
userlistHTML += '<li class="userlist_pawn'+ user.role +'"><span class="userlist_name">' + user.name + ' (' + user.role + ')</span></li>';
});
$(id).html(userlistHTML);
}
Userlist(users);
// gives the list in the order of admin > moderator > member
// Bob (admin)
// Stuart (admin)
// Susan (moderator)
// Gavin (moderator)
// Arthur (member)
// Sylvia (member)
ul {
list-style: none;
padding-left: 0;
}
.userlist_pawnAdmin {
color: red;
}
.userlist_pawnModerator {
color: blue;
}
.userlist_pawnMember {
color: green;
}
.userlist_pawnAdmin + .userlist_pawnModerator,
.userlist_pawnModerator + .userlist_pawnMember {
margin-top: 16px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id = "userlist"></ul>
- 2 回答
- 0 關(guān)注
- 135 瀏覽
添加回答
舉報