在用戶的物件中找到具有許多技能的人。
const users = {
Alex: {
email: '[email protected]',
skills: ['HTML', 'CSS', 'JavaScript'],
age: 20,
isLoggedIn: false,
points: 30
},
Asab: {
email: '[email protected]',
skills: ['HTML', 'CSS', 'JavaScript', 'Redux', 'MongoDB', 'Express', 'React', 'Node'],
age: 25,
isLoggedIn: false,
points: 50
},
Brook: {
email: '[email protected]',
skills: ['HTML', 'CSS', 'JavaScript', 'React', 'Redux'],
age: 30,
isLoggedIn: true,
points: 50
},
Daniel: {
email: '[email protected]',
skills: ['HTML', 'CSS', 'JavaScript', 'Python'],
age: 20,
isLoggedIn: false,
points: 40
},
}
有什么功能可以讓我一次計算每個用戶技能的長度,然后找出哪個用戶的技能最高?
uj5u.com熱心網友回復:
你可以做這樣的事情
const userWithMaxSkills = users => Object.entries(users)
.reduce((res, [username, data]) => {
if(data.skills.length > res.maxSkills){
return {
maxSkills: data.skills.length,
user: {
[username]: data
}
}
}
return res
},
{
maxSkills: -1,
user: undefined
}
).user
const users = {
Alex: {
email: '[email protected]',
skills: ['HTML', 'CSS', 'JavaScript'],
age: 20,
isLoggedIn: false,
points: 30
},
Asab: {
email: '[email protected]',
skills: ['HTML', 'CSS', 'JavaScript', 'Redux', 'MongoDB', 'Express', 'React', 'Node'],
age: 25,
isLoggedIn: false,
points: 50
},
Brook: {
email: '[email protected]',
skills: ['HTML', 'CSS', 'JavaScript', 'React', 'Redux'],
age: 30,
isLoggedIn: true,
points: 50
},
Daniel: {
email: '[email protected]',
skills: ['HTML', 'CSS', 'JavaScript', 'Python'],
age: 20,
isLoggedIn: false,
points: 40
},
}
console.log(userWithMaxSkills(users))
uj5u.com熱心網友回復:
您可以簡單地sort()通過Object.entries并skills.length檢索第一個元素。在這里將結果轉換回帶有Object.fromEntries().
const users = { Alex: { email: '[email protected]', skills: ['HTML', 'CSS', 'JavaScript'], age: 20, isLoggedIn: false, points: 30 }, Asab: { email: '[email protected]', skills: ['HTML', 'CSS', 'JavaScript', 'Redux', 'MongoDB', 'Express', 'React', 'Node'], age: 25, isLoggedIn: false, points: 50 }, Brook: { email: '[email protected]', skills: ['HTML', 'CSS', 'JavaScript', 'React', 'Redux'], age: 30, isLoggedIn: true, points: 50 }, Daniel: { email: '[email protected]', skills: ['HTML', 'CSS', 'JavaScript', 'Python'], age: 20, isLoggedIn: false, points: 40 }, };
const result = Object.fromEntries([
Object.entries(users).sort((a, b) => b[1].skills.length - a[1].skills.length)[0]
]);
console.log(result);
但我完全同意@DimVai 的評論——對于這種型別的資料,陣列絕對是更合適的選擇,并且還簡化了檢索您想要的結果的程序。
const users = [{ name: 'Alex', email: '[email protected]', skills: ['HTML', 'CSS', 'JavaScript'], age: 20, isLoggedIn: false, points: 30 }, { name: 'Asab', email: '[email protected]', skills: ['HTML', 'CSS', 'JavaScript', 'Redux', 'MongoDB', 'Express', 'React', 'Node'], age: 25, isLoggedIn: false, points: 50 }, { name: 'Brook', email: '[email protected]', skills: ['HTML', 'CSS', 'JavaScript', 'React', 'Redux'], age: 30, isLoggedIn: true, points: 50 }, { name: 'Daniel', email: '[email protected]', skills: ['HTML', 'CSS', 'JavaScript', 'Python'], age: 20, isLoggedIn: false, points: 40 },];
const [result] = users.sort((a, b) => b.skills.length - a.skills.length);
console.log(result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/474888.html
標籤:javascript 数组 功能 目的 方法
