diff --git a/01_Day_JavaScript_Refresher/01_javascript_refresher.md b/01_Day_JavaScript_Refresher/01_javascript_refresher.md index 7d03fb4..0dca8db 100644 --- a/01_Day_JavaScript_Refresher/01_javascript_refresher.md +++ b/01_Day_JavaScript_Refresher/01_javascript_refresher.md @@ -2124,7 +2124,7 @@ const products = [ { _id: 'hedfcg', name: 'TV', - description: 'Smart TV:Procaster', + description: 'Smart TV: Procaster', price: 400, ratings: [{ userId: 'fg12cy', rate: 5 }], likes: ['fg12cy'], diff --git a/solutions/day-01/index.html b/solutions/day-01/index.html new file mode 100644 index 0000000..4b421fa --- /dev/null +++ b/solutions/day-01/index.html @@ -0,0 +1,23 @@ + + + + + + + + + + + 30DaysOfJavaScript:External script + + + + + + + + + + + + \ No newline at end of file diff --git a/solutions/day-01/intro.js b/solutions/day-01/intro.js new file mode 100644 index 0000000..69dcd8b --- /dev/null +++ b/solutions/day-01/intro.js @@ -0,0 +1,141 @@ +// file is external source to index.html +// last thing in body +console.log('hello challenge'); +// variables declared with let or var can be changed +let firstName = 'LSMarch'; +firstName = 'greatest'; +var lastName = 'Hacker'; +lastName = 'ever'; +console.log(`${firstName} ${lastName}`); +// variables declared with const cannot be changed +const PI = 3.14159; +// this won't diplsay and it errors out +//PI = 3.14; +console.log(PI); + +const numbers = [0, 3, 6, 9, 12]; // array of numbers +const fruits = ['banana', 'apple', 'peach', 'orange']; // array of strings +// print array and it's length +console.log('Numbers:', numbers); +console.log('Number of numbers:', numbers.length); +console.log('Fruits:', fruits); +console.log('Number of fruits:', fruits.length); +// an array can have values of different types +const array = [ + 'LSMarch', + 3, + false, + { make: 'Chevy', model: 'Prism' }, + { skills: ['HTML', 'JavaScript', 'CSS', 'React', 'Java', 'Angular'] } +]; +console.log(array); + +let js = 'JavaScript' +// splits js into an array at each character +const charactersInJavaScript = js.split(''); +console.log('Split a string:', charactersInJavaScript); +let companiesString = 'Facebook, Google, Microsoft, Apple, IBM, Oracle, Amazon'; +// splits string at comma and returns array +const companies = companiesString.split(','); +console.log('Split a string at ",":', companies); +// can access each element in an array by their index. +// array index starts at 0 +let firstFruit = fruits[0]; +console.log("Call value at index 0 in fruits array", firstFruit); +let secondFruit = fruits[1]; +console.log("Call value at index 0 in fruits array", secondFruit); +// last index can be be accessed as... +let lastIndex = fruits.length - 1; +lastFruit = fruits[lastIndex]; +console.log("Call value at last index of fruits array", lastFruit); +// arrays are mutable and we can modify it +numbers[0] = 99; +numbers[1] = 120; +console.log("Modified numbers array:", numbers); +// methods to manipulate an array +const arr = Array(); +// just an empty array +console.log("array created using Array constructor", arr); +const eightEmptyValues = Array(8); +console.log("Array of 8 indexes with constructor:", eightEmptyValues); +// creates an array iwth 8 element values with 'X' +const eightXValues = Array(8).fill('X'); +console.log("Array of 8 indexes with value of 'X' with constructor:", eightXValues); +// concatenating two arrays +const firstList = [1, 2, 3]; +const secondList = [4, 5, 6]; +const thirdList = firstList.concat(secondList); +console.log("Concacted firstList and secondList:", thirdList); +// .length returns the length of the array +// indexOf return index of an element +console.log("Shows index of array element:", numbers.indexOf(12)); +// if element is not in array returns -1 +console.log("Shows index of array element:", numbers.indexOf(22)); +// checking to see if something is in an array +let index = fruits.indexOf('apple'); +if (index != -1) { + console.log('This fruit is in the array'); +} else { + console.log('This fruit is not in the array'); +} +// can also use ternary +index != -1 ? console.log('This fruit is in the array') : console.log('This fruit is not in the array') +let indexofAvocado = fruits.indexOf('avocado'); +indexofAvocado != -1 ? console.log('This fruit is in the array') : console.log('This fruit is not in the array'); +// lastIndexOf gives the index of the last item in the array +const newNums = [1, 2, 3, 4, 5, 3, 1, 2]; +console.log('Last index of value in newNums:', newNums.lastIndexOf(2)); +console.log('Last index of value in newNums:', newNums.lastIndexOf(6)); +console.log('Last index of value in newNums:', newNums.lastIndexOf(1)); +// include checks if element is in array and returns boolean +console.log('4 is in the number array:', numbers.includes(4)); +console.log('9 is in the numbers array:', numbers.includes(9)); +// Array.isArray checks to see if value is indeed an array +console.log('Numbers is an array:', Array.isArray(numbers)); +const number = 100; +console.log('Number is an array', Array.isArray(number)); +//toString converts array to string (no spaces) +console.log("Numbers array as string", numbers.toString()); +// join is used to join elements to array. Argument passed will be joined +// in the array and return as a string; +const webTechs = ['HTML', 'JavaScript', 'CSS', 'React', 'Java', 'Angular']; +console.log("Joins webTechs array with comma and space", webTechs.join(', ')); +// slice cuts out multiple items in a range. Takes 2 arguments, +// starting and ending posiion, excludes ending position +console.log("Slice():", numbers.slice()); +console.log("Slice(0)", numbers.slice()); +console.log("Slice(0, numbers.length)", numbers.slice(0, numbers.length)); +console.log("Slice(1, 4", numbers.slice(1, 4)); +// splice takes 3 arguments, starting position, number of items to be removed, +// and number of items to be added +const moreNumbers = [1, 2, 3, 4, 5, 6]; +moreNumbers.splice() +console.log("Splice() removes all itmes:", moreNumbers.splice()); +//moreNumbers.splice(0, 1) +console.log("Splice(0, 1) removes first item:", moreNumbers); +moreNumbers.splice(3, 3, 7, 8, 9) +console.log("removes 3 items and replaces 3 items", moreNumbers); +// push() adds to the end of an existing array +moreNumbers.push(10); +console.log("Push:", moreNumbers); +// pop() removes 1 item from the end of the array +moreNumbers.pop(); +console.log("Pop:", moreNumbers); +// shift() removes 1 from the beginning of the array +moreNumbers.shift(); +console.log("Shift:", moreNumbers); +// unshift() add to the beginning of the array +moreNumbers.unshift(1); +console.log("Unshift:", moreNumbers); +// reverses the order of the array +moreNumbers.reverse(); +console.log("Reverse:", moreNumbers); +// sore() arranges array elements in ascending order. +webTechs.sort(); +console.log("Sort:", webTechs); +// Array of arrays +const frontEnd = ["HTML", "CSS", "JavaScript", "Angular", "React", "Redux"]; +const backEnd = ["Node", "Express", "SQL", "MongoDB", "Java", "Spring Boot"]; +const fullStack = [frontEnd, backEnd]; +// returns an array with 2 arrays +console.log("Array in array:", fullStack); \ No newline at end of file diff --git a/solutions/day-01/level_1.js b/solutions/day-01/level_1.js new file mode 100644 index 0000000..f4231f9 --- /dev/null +++ b/solutions/day-01/level_1.js @@ -0,0 +1,69 @@ +const exercise1_1 = []; +const exercise1_2 = [1, 2, 3, 4, 5, 6]; + +console.log(exercise1_2.length); + +console.log(exercise1_2[0]); + +console.log(exercise1_2[3]); + +const lastIndex = exercise1_2.length - 1; +console.log(exercise1_2[lastIndex]); + +const mixedDataTypes = [ + 'LSMarch', + 5, + { firstName: 'greatest', lastName: 'ever' }, + ['HTML', 'CSS', 'JavaScript'], + 45, + 'React' +]; + +const itCompanies = [ + 'Facebook', + 'Google', + 'Microsoft', + 'Apple', + 'IBM', + 'Oracle', + 'Amazon' +]; + +console.log(itCompanies); +console.log("IT Companies Length:", itCompanies.length); +console.log("First company:", itCompanies[0]); +console.log("Middle Company:", itCompanies[4]); +console.log("Last Company:", itCompanies[itCompanies.length - 1]); + +for (let i = 0; i < itCompanies.length; i++) { + console.log(itCompanies[i]) +} + +for (let i = 0; i < itCompanies.length; i++) { + console.log(itCompanies[i].toUpperCase()); +} + +console.log(itCompanies.join(', ') + " are big IT companies"); + +let checkCompany = itCompanies.indexOf('IBM'); +checkCompany = -1 + ? console.log('IBM is in the array') + : console.log('IBM is NOT in the array'); + +// for (let i = 0; i < itCompanies.length; i++) { +// if (!itCompanies[i].includes('oo')) { +// itCompanies.splice(3, i); +// } +// } +//console.log(itCompanies); + +//console.log(itCompanies.sort()); +//console.log(itCompanies.reverse()); + +console.log(itCompanies.slice(0, 3)); +console.log(itCompanies.slice(4, 7)); +console.log(itCompanies.slice(2, 5)); +//console.log(itCompanies.splice(0, 1)); +//console.log(itCompanies.splice(6, 1)); +//console.log(itCompanies.splice(3, 1)); +console.log(itCompanies.splice()); \ No newline at end of file diff --git a/solutions/day-01/level_2.js b/solutions/day-01/level_2.js new file mode 100644 index 0000000..3f36d95 --- /dev/null +++ b/solutions/day-01/level_2.js @@ -0,0 +1,51 @@ +import countries from "./modules/countries.js"; +import web_techs from "./modules/web_techs.js"; + +let text = 'I love teaching and empowering people. I teach HTML, CSS, JS, React, Python.' +let textToSplitPeriod = text.split('.') +let textToString = textToSplitPeriod.toString(); +let textTosplitComma = textToString.split(','); +textToString = textTosplitComma.toString(); +let words = textToString.split(' '); +console.log('words:', words); +console.log(words.length); + +const shoppingCart = [ + 'Milk', 'Coffee', 'Tea', 'Honey' +]; + + +for (let i = 0; i < shoppingCart.length; i++) { + if (!shoppingCart.includes("Meat")) { + shoppingCart.unshift('Meat'); + } + if (!shoppingCart.includes("Sugar")) { + shoppingCart.push("Sugar") + } + if (shoppingCart[i] == "Tea") { + shoppingCart[i] = "Green Tea" + } +} +console.log(shoppingCart); + +countries.forEach(country => { + if (country == "Ethiopia") { + console.log(country); + } else { + countries.push("Ethiopia"); + } +}); + +web_techs.forEach(tech => { + if (tech == "Sass") { + console.log("Sass is a CSS preprocess"); + } else if (!web_techs.includes("Sass")) { + web_techs.push("Sass"); + } +}); +console.log(web_techs); + +const frontEnd = ['HTML', 'CSS', 'JavaScript', 'React', 'Redux']; +const backEnd = ['Node', 'Express', 'MongoDB']; +const fullStack = frontEnd.concat(backEnd); +console.log(fullStack); \ No newline at end of file diff --git a/solutions/day-01/level_3.js b/solutions/day-01/level_3.js new file mode 100644 index 0000000..e521543 --- /dev/null +++ b/solutions/day-01/level_3.js @@ -0,0 +1,221 @@ +import countries from "./modules/countries.js"; + +const ages = [ + 19, + 22, + 19, + 24, + 20, + 25, + 26, + 24, + 25, + 24 +]; + +const sortedAges = ages.sort(); +console.log("Min age:", sortedAges[0]); +console.log("Max age:", sortedAges[sortedAges.length - 1]); +console.log("Median age:", sortedAges[4] / 2); +const initialValue = 0; +const reducedAges = ages.reduce((previousValue, currentValue) => + previousValue + currentValue, initialValue); +console.log("Average age:", reducedAges / 2); +console.log("Age range:", sortedAges[sortedAges.length - 1] - sortedAges[0]); +const compareMin = (min, average) => { + return Math.abs(min - average); +} +const compareMax = (max, average) => { + return Math.abs(max - average); +} +console.log("Compare min:", compareMin(sortedAges[0], (reducedAges / 2))); +console.log("Compare max:", compareMax(sortedAges[sortedAges.length - 1], (reducedAges / 2))); + +console.log(countries.slice()); + +if (countries.length % 2 != 0) { + console.log('Middle countries:', countries[5], 'and', countries[6]) +} + +const firstHalf = []; +const secondHalf = []; +if ((countries.length - 6) % 2 != 0) { + for (let i = 0; i < countries.length - 6; i++) { + firstHalf.push(countries[i]); + } + for (let i = countries.length - 6; i < countries.length; i++) { + secondHalf.push(countries[i]) + } +}; +firstHalf.push("Italy") +console.log(firstHalf.length, firstHalf) +console.log(secondHalf.length, secondHalf) + +let userAgeInput = prompt("Enter your age: "); +let userAge = parseInt(userAgeInput); +let myAge = 31; + +switch (true) { + case userAge > 16: + console.log("You are old enough to drive") + break; + case userAge < 16: + console.log(`"You must wait ${16 - userAge} years to drive`) + default: + break; +} + +if (userAge < myAge) { + console.log(`I am ${myAge - userAge} years older than you`) +} else { + console.log(`You are ${userAge - myAge} years older than me`) +} + +let a = 4; +let b = 3; + +a < b + ? console.log(`${a} is less than ${b}`) + : console.log(`${b} is less than ${a}`) + +switch (true) { + case userAge % 2 == 0: + console.log(`${userAge} is an even number`); + break; + case userAge % 2 != 0: + console.log(`${userAge} is an odd number`); + break; + default: + break; +} + +let scoreInput = prompt('Score: '); +let studentScore = parseInt(scoreInput); +if (80 < studentScore && studentScore < 100) { + console.log(`Student receives an A`) +} else if (70 < studentScore && studentScore < 89) { + console.log(`Student receives a B`); +} else if (60 < studentScore && studentScore < 69) { + console.log(`Student receives a C`); +} else if (50 < studentScore && studentScore < 59) { + console.log(`Studnet receives a D`); +} else if (0 < studentScore && studentScore < 49) { + console.log(`Student receives an F`); +} + +let day = prompt('What is the day today?').toLowerCase(); +switch (day) { + case 'monday': + console.log(`${day} is a working day`); + break; + case 'tuesday': + console.log(`${day} is a working day`); + break; + case 'wednesday': + console.log(`${day} is a working day`); + break; + case 'thursday': + console.log(`${day} is a working day`); + break; + case 'friday': + console.log(`${day} is a working day`); + break; + case 'saturday': + console.log(`${day} is a weekend`); + break; + case 'sunday': + console.log(`${day} is a weekend`); + break; + default: + console.log(`Enter a valid day`); + break; +} + +const month = prompt("Enter a month: ").toLowerCase(); +const leapYearInput = prompt("Is it a leap year?").toLocaleLowerCase(); +if (leapYearInput == 'yes') { + switch (month) { + case 'january': + console.log(`${month} has 31 days`); + break; + case 'feburary': + console.log(`${month} has 29 days`); + break; + case 'march': + console.log(`${month} has 31 days`); + break; + case 'april': + console.log(`${month} has 30 days`); + break; + case 'may': + console.log(`${month} has 31 days`); + break; + case 'june': + console.log(`${month} has 30 days`); + break; + case 'july': + console.log(`${month} has 31 days`); + break; + case 'august': + console.log(`${month} has 31 days`); + break; + case 'september': + console.log(`${month} has 30 days`); + break; + case 'october': + console.log(`${month} has 31 days`); + break; + case 'november': + console.log(`${month} has 30 days`); + break; + case 'december': + console.log(`${month} has 31 days`); + break; + default: + console.log(`Enter a month`); + break; + } +} else { + switch (month) { + case 'january': + console.log(`${month} has 31 days`); + break; + case 'feburary': + console.log(`${month} has 28 days`); + break; + case 'march': + console.log(`${month} has 31 days`); + break; + case 'april': + console.log(`${month} has 30 days`); + break; + case 'may': + console.log(`${month} has 31 days`); + break; + case 'june': + console.log(`${month} has 30 days`); + break; + case 'july': + console.log(`${month} has 31 days`); + break; + case 'august': + console.log(`${month} has 31 days`); + break; + case 'september': + console.log(`${month} has 30 days`); + break; + case 'october': + console.log(`${month} has 31 days`); + break; + case 'november': + console.log(`${month} has 30 days`); + break; + case 'december': + console.log(`${month} has 31 days`); + break; + default: + console.log(`Enter a month`); + break; + } +} + diff --git a/solutions/day-01/modules/countries.js b/solutions/day-01/modules/countries.js new file mode 100644 index 0000000..cf92493 --- /dev/null +++ b/solutions/day-01/modules/countries.js @@ -0,0 +1,15 @@ +export const countries = [ + 'Albania', + 'Bolivia', + 'Canada', + 'Denmark', + 'Ethiopia', + 'Finland', + 'Germany', + 'Hungary', + 'Ireland', + 'Japan', + 'Kenya', +] + +export default countries \ No newline at end of file diff --git a/solutions/day-01/modules/web_techs.js b/solutions/day-01/modules/web_techs.js new file mode 100644 index 0000000..e7ff776 --- /dev/null +++ b/solutions/day-01/modules/web_techs.js @@ -0,0 +1,11 @@ +export const web_techs = [ + 'HTML', + 'CSS', + 'JavaScript', + 'React', + 'Redux', + 'Node', + 'MongoDB' +] + +export default web_techs \ No newline at end of file diff --git a/solutions/day-01/object.js b/solutions/day-01/object.js new file mode 100644 index 0000000..8f486e4 --- /dev/null +++ b/solutions/day-01/object.js @@ -0,0 +1,332 @@ + +const dog = {}; +console.log(dog); +dog.name = 'Spot'; +dog.legs = 4; +dog.color = 'spotted'; +dog.age = 4; +dog.bark = function () { + return 'woof woof'; +}; +console.log(dog.name); +console.log(dog.legs); +console.log(dog.color); +console.log(dog.age); +console.log(dog.bark()); +dog.breed = 'Dalmation'; +dog.getDogInfo = function () { + return `Hi! My name is ${this.name}! I am ${this.age} years old!` +}; +console.log(dog.getDogInfo()) + +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 + } +} + +console.log(users.Alex.skills.length); +console.log(users.Asab.skills.length); +console.log(users.Brook.skills.length); +console.log(users.Daniel.skills.length); +console.log(users.John.skills.length); +console.log(users.Thomas.skills.length); +console.log(users.Paul.skills.length); + + +let usersLoggedIn = 0; +let pointsOver50 = 0; +if (users.Alex.isLoggedIn) { + usersLoggedIn++; +} +if (users.Asab.isLoggedIn) { + usersLoggedIn++; +} +if (users.Brook.isLoggedIn) { + usersLoggedIn++; +} +if (users.Daniel.isLoggedIn) { + usersLoggedIn++; +} +if (users.John.isLoggedIn) { + usersLoggedIn++; +} +if (users.Thomas.isLoggedIn) { + usersLoggedIn++; +} +if (users.Alex.points >= 50) { + pointsOver50++; +} +if (users.Asab.points >= 50) { + pointsOver50++; +} +if (users.Brook.points >= 50) { + pointsOver50++; +} +if (users.Daniel.points >= 50) { + pointsOver50++; +} +if (users.John.points >= 50) { + pointsOver50++; +} +if (users.Thomas.points >= 50) { + pointsOver50++; +} +console.log(usersLoggedIn) +console.log(pointsOver50) + +// MongoDB, Express, React, Node + +let mernDevs = 0; +if (users.Asab.skills.includes('MongoDB') + && users.Asab.skills.includes('Express') + && users.Asab.skills.includes('React') + && users.Asab.skills.includes('Node')) + mernDevs++; +if (users.Alex.skills.includes('MongoDB') + && users.Alex.skills.includes('Express') + && users.Alex.skills.includes('React') + && users.Alex.skills.includes('Node')) + mernDevs++; + +console.log(mernDevs); + +users.Libby = { + email: 'lsmarchetti01@gmail.com', + skills: ['HTML', 'CSS', 'JavaScript', 'TypeScript', 'Angular', 'React', + 'SQL', 'MongoDB', 'Express', 'Java', 'Springboot', 'Node'], + age: 31, + isLoggedIn: true, + points: 60 +} + +console.log(users.Libby); + +const entries = Object.entries(users) +console.log(entries) + +const countries2 = { + USA: { + capital: 'Washington DC', + population: 1000, + language: ['English', 'Spanish', 'Node'] + } +} + +console.log(countries2.USA); + +const personAccount = { + firstName: 'Bob', + lastName: 'Bobert', + incomes: [53, 100, 98, 34], + expenses: [5, 66, 100], + totalIncome: function (incomes) { + const initial = 0; + let total = incomes.reduce((previous, current) => + previous + current, initial + ) + return total; + }, + totalExpense: function (expenses) { + const initial = 0; + let total = expenses.reduce((previous, current) => + previous + current, initial + ) + return total; + }, + addIncome: function (income) { + this.incomes.push(income); + }, + addExpense: function (expense) { + this.expenses.push(expense) + }, + accountBalance: function () { + let balance = this.totalIncome(this.incomes) - this.totalExpense(this.expenses) + return balance; + }, + accountInfo: function () { + console.log(`${this.firstName} ${this.lastName}, your account balance is + ${this.accountBalance()}`) + } + + +} + +console.log(personAccount.totalIncome(personAccount.incomes)) +console.log(personAccount.totalExpense(personAccount.expenses)) +personAccount.accountInfo(); + +const usersArr = [ + { + _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 userToAdd = { + _id: 'afwogf', + username: 'bob', + email: 'bob@bob.com', + passowrd: '5544234' +}; + +const userNotToAdd = { + _id: 'ghderc', + username: 'Thomas', + email: 'thomas@thomas.com', + password: '123333', + createdAt: '08/01/2020 10:00 AM', + isLoggedIn: false, +}; + +const signUp = (newUser) => { + let userExists = false; + usersArr.forEach(existingUser => { + if (newUser._id == existingUser._id) { + console.log('User already exists'); + userExists = true; + } + }) + if (!userExists) { + console.log('User added'); + usersArr.push(newUser); + } +} +signUp(userToAdd) +console.log(usersArr) + +const signIn = (user) => { + user.isLoggedIn = true; + console.log(user.isLoggedIn) +} + + +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'], + }, +] + +const rateProduct = (user, product) => { + for (let i = 0; i < products.length; i++) { + if (product._id == products[i]._id) { + product.ratings.push({ userId: user._id, rate: 1 }); + console.log(products[i].ratings); + } + } +} + +rateProduct(userNotToAdd, products[1]); + +const averageRating = (product) => { + const initial = 0; + console.log(average) +} + +averageRating(products[0]) \ No newline at end of file