#javascript #arrays
#javascript #массивы
Вопрос:
Я новичок в программировании, только начал изучать JS. У меня есть упражнение, которое я не уверен, как решить. Задача состоит в том, чтобы подсчитать, какой пользователь обладает наибольшими навыками. Приведенный код выглядит следующим образом:
const users = {
Alex: {
email: 'alex@alex.com',
skills: ['HTML', 'CSS', 'JavaScript'],
age: 20,
isLoggedIn: false,
points: 30
},
Asab: {
email: 'asab@asab.com',
skills: ['HTML', 'CSS', 'JavaScript', 'Redux', 'MongoDB', 'Express', 'React', 'Node'],
age: 25,
isLoggedIn: false,
points: 50
},
Brook: {
email: 'daniel@daniel.com',
skills: ['HTML', 'CSS', 'JavaScript', 'React', 'Redux'],
age: 30,
isLoggedIn: true,
points: 50
},
Daniel: {
email: 'daniel@alex.com',
skills: ['HTML', 'CSS', 'JavaScript', 'Python'],
age: 20,
isLoggedIn: false,
points: 40
},
John: {
email: 'john@john.com',
skills: ['HTML', 'CSS', 'JavaScript', 'React', 'Redux', 'Node.js'],
age: 20,
isLoggedIn: true,
points: 50
},
Thomas: {
email: 'thomas@thomas.com',
skills: ['HTML', 'CSS', 'JavaScript', 'React'],
age: 20,
isLoggedIn: false,
points: 40
},
Paul: {
email: 'paul@paul.com',
skills: ['HTML', 'CSS', 'JavaScript', 'MongoDB', 'Express', 'React', 'Node'],
age: 20,
isLoggedIn: false,
points: 40
}
}
Я предполагаю, что мне нужно использовать цикл, однако я не уверен, как получить доступ к массиву навыков?
Ответ №1:
Действительно, вы можете использовать цикл по ключам вашего users
объекта. Затем сравните длины skills
свойства, чтобы определить, у какого пользователя самый длинный список:
const users = {Alex: {email: 'alex@alex.com',skills: ['HTML', 'CSS', 'JavaScript'],age: 20,isLoggedIn: false,points: 30},Asab: {email: 'asab@asab.com',skills: ['HTML', 'CSS', 'JavaScript', 'Redux', 'MongoDB', 'Express', 'React', 'Node'],age: 25,isLoggedIn: false,points: 50},Brook: {email: 'daniel@daniel.com',skills: ['HTML', 'CSS', 'JavaScript', 'React', 'Redux'],age: 30,isLoggedIn: true,points: 50},Daniel: {email: 'daniel@alex.com',skills: ['HTML', 'CSS', 'JavaScript', 'Python'],age: 20,isLoggedIn: false,points: 40},John: {email: 'john@john.com',skills: ['HTML', 'CSS', 'JavaScript', 'React', 'Redux', 'Node.js'],age: 20,isLoggedIn: true,points: 50},Thomas: {email: 'thomas@thomas.com',skills: ['HTML', 'CSS', 'JavaScript', 'React'],age: 20,isLoggedIn: false,points: 40},Paul: {email: 'paul@paul.com',skills: ['HTML', 'CSS', 'JavaScript', 'MongoDB', 'Express', 'React', 'Node'],age: 20,isLoggedIn: false,points: 40}}
let topUser;
for (let user in users) {
if (!topUser || users[user].skills.length > users[topUser].skills.length) topUser = user;
}
console.log(topUser);
Ответ №2:
Что вы пробовали до сих пор? Начните с цикла по объекту users, затем вы можете получить навыки для каждого пользователя.
for (u in users) {
console.log(u.skills);
}