parent
429057a4d3
commit
aaf7f36556
@ -1,63 +1,117 @@
|
|||||||
const users = {
|
const users = {
|
||||||
Alex: {
|
Alex: {
|
||||||
email: 'alex@alex.com',
|
email: 'alex@alex.com',
|
||||||
skills: ['HTML', 'CSS', 'JavaScript'],
|
skills: ['HTML', 'CSS', 'JavaScript'],
|
||||||
age: 20,
|
age: 20,
|
||||||
isLoggedIn: false,
|
isLoggedIn: false,
|
||||||
points: 30
|
points: 30
|
||||||
},
|
},
|
||||||
Asab: {
|
Asab: {
|
||||||
email: 'asab@asab.com',
|
email: 'asab@asab.com',
|
||||||
skills: ['HTML', 'CSS', 'JavaScript', 'Redux', 'MongoDB', 'Express', 'React', 'Node'],
|
skills: ['HTML', 'CSS', 'JavaScript', 'Redux', 'MongoDB', 'Express', 'React', 'Node'],
|
||||||
age: 25,
|
age: 25,
|
||||||
isLoggedIn: false,
|
isLoggedIn: false,
|
||||||
points: 50
|
points: 50
|
||||||
},
|
},
|
||||||
Brook: {
|
Brook: {
|
||||||
email: 'daniel@daniel.com',
|
email: 'daniel@daniel.com',
|
||||||
skills: ['HTML', 'CSS', 'JavaScript', 'React', 'Redux'],
|
skills: ['HTML', 'CSS', 'JavaScript', 'React', 'Redux'],
|
||||||
age: 30,
|
age: 30,
|
||||||
isLoggedIn: true,
|
isLoggedIn: true,
|
||||||
points: 50
|
points: 50
|
||||||
},
|
},
|
||||||
Daniel: {
|
Daniel: {
|
||||||
email: 'daniel@alex.com',
|
email: 'daniel@alex.com',
|
||||||
skills: ['HTML', 'CSS', 'JavaScript', 'Python'],
|
skills: ['HTML', 'CSS', 'JavaScript', 'Python'],
|
||||||
age: 20,
|
age: 20,
|
||||||
isLoggedIn: false,
|
isLoggedIn: false,
|
||||||
points: 40
|
points: 40
|
||||||
},
|
},
|
||||||
John: {
|
John: {
|
||||||
email: 'john@john.com',
|
email: 'john@john.com',
|
||||||
skills: ['HTML', 'CSS', 'JavaScript', 'React', 'Redux', 'Node.js'],
|
skills: ['HTML', 'CSS', 'JavaScript', 'React', 'Redux', 'Node.js'],
|
||||||
age: 20,
|
age: 20,
|
||||||
isLoggedIn: true,
|
isLoggedIn: true,
|
||||||
points: 50
|
points: 50
|
||||||
},
|
},
|
||||||
Thomas: {
|
Thomas: {
|
||||||
email: 'thomas@thomas.com',
|
email: 'thomas@thomas.com',
|
||||||
skills: ['HTML', 'CSS', 'JavaScript', 'React'],
|
skills: ['HTML', 'CSS', 'JavaScript', 'React'],
|
||||||
age: 20,
|
age: 20,
|
||||||
isLoggedIn: false,
|
isLoggedIn: false,
|
||||||
points: 40
|
points: 40
|
||||||
},
|
},
|
||||||
Paul: {
|
Paul: {
|
||||||
email: 'paul@paul.com',
|
email: 'paul@paul.com',
|
||||||
skills: ['HTML', 'CSS', 'JavaScript', 'MongoDB', 'Express', 'React', 'Node'],
|
skills: ['HTML', 'CSS', 'JavaScript', 'MongoDB', 'Express', 'React', 'Node'],
|
||||||
age: 20,
|
age: 20,
|
||||||
isLoggedIn: false,
|
isLoggedIn: false,
|
||||||
points: 40
|
points: 40
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function mostSkills() {
|
function mostSkills() {
|
||||||
let obj = undefined;
|
let obj = undefined;
|
||||||
for (const person in users) {
|
for (const person in users) {
|
||||||
if (users.person.skills.length > obj.skills.length) {
|
if (obj == undefined) {
|
||||||
obj = users.person;
|
obj = users[person];
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (users[person].skills.length > obj.skills.length) {
|
||||||
|
obj = users[person];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log(obj);
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
function enoughPoints() {
|
||||||
|
let count = 0;
|
||||||
|
for (const person in users) {
|
||||||
|
if (Object.hasOwnProperty.call(users, person)) {
|
||||||
|
if (users[person].points >= 50) {
|
||||||
|
count += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
function findMERN() {
|
||||||
|
const MERN = ["MongoDB", "Express", "React", "Node"];
|
||||||
|
const people = {};
|
||||||
|
for (const person in users) {
|
||||||
|
if (Object.hasOwnProperty.call(users, person) && MERN.every(stack => users[person].skills.includes(stack))) {
|
||||||
|
people[person] = users[person];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return people;
|
||||||
|
}
|
||||||
|
|
||||||
|
function addUser(user) {
|
||||||
|
let name = user.email;
|
||||||
|
name = name.split("@")[0];
|
||||||
|
name = name[0].toUpperCase() + name.slice(1);
|
||||||
|
users[name] = user;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getKeys() {
|
||||||
|
const keys = [];
|
||||||
|
for (const person in users) {
|
||||||
|
if (Object.hasOwnProperty.call(users, person)) {
|
||||||
|
keys.push(person);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return keys;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getValues() {
|
||||||
|
const values = [];
|
||||||
|
for (const person in users) {
|
||||||
|
if (Object.hasOwnProperty.call(users, person)) {
|
||||||
|
values.push(users[person]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return values;
|
||||||
}
|
}
|
||||||
|
|
||||||
mostSkills();
|
// no countries object???
|
@ -0,0 +1,160 @@
|
|||||||
|
const personAccount = {
|
||||||
|
firstName: "Joe",
|
||||||
|
lastName: "Dover",
|
||||||
|
incomes: [0],
|
||||||
|
expenses: [0],
|
||||||
|
|
||||||
|
totalIncome: function() {
|
||||||
|
return this.incomes.reduce((acc, val) => acc+val);
|
||||||
|
},
|
||||||
|
|
||||||
|
totalExpense: function() {
|
||||||
|
return this.expenses.reduce((acc, val) => acc+val);
|
||||||
|
},
|
||||||
|
|
||||||
|
accountInfo: function() {
|
||||||
|
return `Name: ${this.lastName} ${this.firstName} In/Out: ${this.totalIncome()}/${this.totalExpense()}`;
|
||||||
|
},
|
||||||
|
|
||||||
|
addExpense: function(expense) {
|
||||||
|
this.expenses.push(expense);
|
||||||
|
},
|
||||||
|
|
||||||
|
accountBalance: function() {
|
||||||
|
return this.totalIncome() - this.totalExpense();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const users = [
|
||||||
|
{
|
||||||
|
_id: 'ab12ex',
|
||||||
|
username: 'Alex',
|
||||||
|
email: 'alex@alex.com',
|
||||||
|
password: '123123',
|
||||||
|
createdAt: '08/01/2020 9:00 AM',
|
||||||
|
isLoggedIn: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
_id: 'fg12cy',
|
||||||
|
username: 'Asab',
|
||||||
|
email: 'asab@asab.com',
|
||||||
|
password: '123456',
|
||||||
|
createdAt: '08/01/2020 9:30 AM',
|
||||||
|
isLoggedIn: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
_id: 'zwf8md',
|
||||||
|
username: 'Brook',
|
||||||
|
email: 'brook@brook.com',
|
||||||
|
password: '123111',
|
||||||
|
createdAt: '08/01/2020 9:45 AM',
|
||||||
|
isLoggedIn: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
_id: 'eefamr',
|
||||||
|
username: 'Martha',
|
||||||
|
email: 'martha@martha.com',
|
||||||
|
password: '123222',
|
||||||
|
createdAt: '08/01/2020 9:50 AM',
|
||||||
|
isLoggedIn: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
_id: 'ghderc',
|
||||||
|
username: 'Thomas',
|
||||||
|
email: 'thomas@thomas.com',
|
||||||
|
password: '123333',
|
||||||
|
createdAt: '08/01/2020 10:00 AM',
|
||||||
|
isLoggedIn: false,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
const products = [
|
||||||
|
{
|
||||||
|
_id: 'eedfcf',
|
||||||
|
name: 'mobile phone',
|
||||||
|
description: 'Huawei Honor',
|
||||||
|
price: 200,
|
||||||
|
ratings: [
|
||||||
|
{ userId: 'fg12cy', rate: 5 },
|
||||||
|
{ userId: 'zwf8md', rate: 4.5 },
|
||||||
|
],
|
||||||
|
likes: [],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
_id: 'aegfal',
|
||||||
|
name: 'Laptop',
|
||||||
|
description: 'MacPro: System Darwin',
|
||||||
|
price: 2500,
|
||||||
|
ratings: [],
|
||||||
|
likes: ['fg12cy'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
_id: 'hedfcg',
|
||||||
|
name: 'TV',
|
||||||
|
description: 'Smart TV:Procaster',
|
||||||
|
price: 400,
|
||||||
|
ratings: [{ userId: 'fg12cy', rate: 5 }],
|
||||||
|
likes: ['fg12cy'],
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
function signUp(username, email, password) {
|
||||||
|
if (accountExists(email)) {
|
||||||
|
console.log("This account already exists");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const newUser = {};
|
||||||
|
newUser._id = userIdGenerator();
|
||||||
|
newUser.username = username;
|
||||||
|
newUser.email = email;
|
||||||
|
newUser.password = password;
|
||||||
|
newUser.createdAt = showDateTime();
|
||||||
|
isLoggedIn = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function showDateTime() {
|
||||||
|
const format = {
|
||||||
|
year: "numeric",
|
||||||
|
month: "2-digit",
|
||||||
|
day: "2-digit",
|
||||||
|
hour: "2-digit",
|
||||||
|
minute: "2-digit"
|
||||||
|
};
|
||||||
|
console.log(Intl.DateTimeFormat(undefined, format).format(new Date()).replace(',', ''));
|
||||||
|
}
|
||||||
|
|
||||||
|
function userIdGenerator() {
|
||||||
|
const chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
||||||
|
result = "";
|
||||||
|
for (let i = 0; i < 7; i++) {
|
||||||
|
result += chars[Math.floor(Math.random() * chars.length)];
|
||||||
|
}
|
||||||
|
console.log(result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the account already exists
|
||||||
|
* returns boolean
|
||||||
|
*/
|
||||||
|
function accountExists(email) {
|
||||||
|
users.forEach(user => {
|
||||||
|
if (user.email == email) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function rateProduct(userID, productID, rating) {
|
||||||
|
products.forEach(product => {
|
||||||
|
if (product._id == productID) {
|
||||||
|
product.ratings.push({userId: userID, rate: rating});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
console.log("There is no such product");
|
||||||
|
}
|
||||||
|
|
||||||
|
function averageRating() {
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in new issue