console.log(countries) // alert('Open the console and check if the countries has been loaded') // Exercises: Level 1 // 1) Create an empty object called dog var dog = {}; // 2) Print the the dog object on the console console.log(dog); // 3) Add name, legs, color, age and bark properties for the dog object. The bark property is a method which return woof woof dog.name = "inu"; dog.legs = 4; dog.color = "blue"; dog.age = 5; dog.bark = function(){ return "woof woof"; }; // 4) Get name, legs, color, age and bark value from the dog object console.log(dog.name); console.log(dog.legs); console.log(dog.color); console.log(dog.age); console.log(dog.bark()); // 5) Set new properties the dog object: breed, getDogInfo dog.breed = "shiba inu"; dog.getDogInfo = function(){}; // Exercises: Level 2 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) Find the person who has many skills in the users object. var persons = Object.entries(users); var count = 0; var person = ""; for(var i = 0; i < persons.length; i++) { if(persons[i][1].skills.length>count) { count = persons[i][1].skills.length; person = persons[i][0]; } } console.log(person + "is the person who has many skills in the users object"); // 2) Count logged in users, count users having greater than equal to 50 points from the following object. count = 0; for(var i = 0; i < persons.length; i++) { if(persons[i][1].isLoggedIn == true) { count ++; } } console.log(count+" logged in users"); count = 0; for(var i = 0; i < persons.length; i++) { if(persons[i][1].points > 50) { count ++; } } console.log(count+" users having greater to 50 points from the following object"); count = 0; for(var i = 0; i < persons.length; i++) { if(persons[i][1].points == 50) { count ++; } } console.log(count+" users having equal to 50 points from the following object"); // 3) Find people who are MERN stack developer from the users object function isMERN(skills) { var mern = ['MongoDB', 'Express', 'React', 'Node']; for(var i = 0; i < mern.length; i++) { if(skills.indexOf(mern[i])==-1) { return false; } } return true; } var mern = []; for(var i = 0; i < persons.length; i++) { if(isMERN(persons[i][1].skills)==true) { mern.push(persons[i][0]); } } console.log(mern, "are the mern dev"); // 4) Set your name in the users object without modifying the original users object users.Faliana = Object.assign({}, users.Paul); console.log(users.Faliana); // 5) Get all keys or properties of users object console.log(Object.keys(users)); // 6) Get all the values of users object console.log(Object.values(users)); // 7) Use the countries object to print a country name, capital, populations and languages. console.log("print a country name: ", countries[0].name); console.log("print a country capital: ", countries[0].capital); console.log("print a country populations: ", countries[0].population); console.log("print a country languages: ", countries[0].languages); // Exercises: Level 3 // 1) Create an object literal called personAccount. It has firstName, lastName, incomes, // expenses properties and it has totalIncome, totalExpense, accountInfo,addIncome, addExpense and accountBalance methods. // Incomes is a set of incomes and its description and expenses is a set of incomes and its description. var personAccount = { firstName: "", lastName: "", incomes: 0, expenses: 0, totalIncome: function(){}, totalExpense: function(){}, accountInfo: function(){}, addIncome: function(){}, addExpense: function(){}, accountBalance: function(){} }; console.log(personAccount); // 2) **** Questions:2, 3 and 4 are based on the following two arrays:users and products () const users2 = [ { _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'] } ] // Imagine you are getting the above users collection from a MongoDB database. // a. Create a function called signUp which allows user to add to the collection. If user exists, inform the user that he has already an account. function signUp(username, email, password) { var user = {}; user._id = "random"; user.username = username; user.email = email; user.password = password; user.createdAt = new Date(); user.isLoggedIn = false; if(checkExistedUser(username, password)==false) { users2.push(user); } else { alert(username+" already an account"); } } function checkExistedUser(username, password) { for(var i = 0; i < users2.length; i++) { if(users2[i].username == username || users2[i].password == password) { return true; } } return false; } signUp("poupoussy", "poupoussy@gmail.com", "poupoussypoupoussy"); console.log(users2); // signUp("Alex", "poupoussy@gmail.com", "poupoussypoupoussy"); // b. Create a function called signIn which allows user to sign in to the application function signIn(email, password) { for(var i = 0; i < users2.length; i++) { if(users2[i].email==email && users2[i].password==password) { return "logged in"; } } return "wrong email or password"; } console.log(signIn("poupoussy@gmail.com", "poupoussy")); console.log(signIn("poupoussy@gmail.com", "poupoussypoupoussy")); // 3) The products array has three elements and each of them has six properties. // a. Create a function called rateProduct which rates the product function rateProduct(product, user, rate) { product.ratings.push({userId: user._id, rate: rate}); } // console.log("alala", users2[5]); rateProduct(products[0], users2[5], 3.69); console.log(products); // b. Create a function called averageRating which calculate the average rating of a product function averageRating(product) { var count = 0; for(var i = 0; i < product.ratings.length; i++) { count += product.ratings[i].rate; } return count/product.ratings.length; } console.log("averageRating", averageRating(products[0])) // 4) Create a function called likeProduct. This function will helps to like to the product if it is not liked and remove like if it was liked. function likeProduct(product, user){ if(product.likes.indexOf(user._id)==-1 || product.likes.length==0) { product.likes.push(user._id); } else { product.likes.splice(product.likes.indexOf(user._id), 1); } // console.log(product.likes); } likeProduct(products[0], users2[5]); console.log("ajout like", products[0]); likeProduct(products[0], users2[5]); console.log("delete like", products[0]);