Завершение базового JavaScript

Стопроцентные друзья! Вчера я прошел базовый курс JavaScript. Спасибо хорошим людям из freeCodeCamp. Все было сделано красиво. У меня есть еще чему поучиться. Вот оставшиеся семнадцать или около того процентов, которые я завернул.

Коллекция записей

Я начинал с большого проекта здесь. Он хотел, чтобы я выполнил функцию, используя правила и условия. Итак, я получил условия и написал код. Достаточно просто.

// Setup
const recordCollection = {
  2548: {
    albumTitle: 'Slippery When Wet',
    artist: 'Bon Jovi',
    tracks: ['Let It Rock', 'You Give Love a Bad Name']
  },
  2468: {
    albumTitle: '1999',
    artist: 'Prince',
    tracks: ['1999', 'Little Red Corvette']
  },
  1245: {
    artist: 'Robert Palmer',
    tracks: []
  },
  5439: {
    albumTitle: 'ABBA Gold'
  }
};

// Only change code below this line
function updateRecords(records, id, prop, value) {
  if (value == '') {
    delete records[id][prop];
  } else if (prop === 'tracks' && records[id].hasOwnProperty("tracks") === false) {
    records[id][prop] = [value];
  } else if (prop == 'tracks' && value != '') {
    records[id][prop].push(value);
  } else if (prop != 'tracks' && value != '') {
    records[id][prop] = value;
  } 
  return records;
}

updateRecords(recordCollection, 5439, 'artist', 'ABBA');

На данный момент это был самый сложный проект, который я когда-либо делал. Это заняло у меня больше всего времени. Я забыл, как проверить, есть ли у чего-то свойство. Я посмотрел, как это сделать в Интернете. И я написал все условия не по порядку. Я думал, что именно поэтому я получаю ошибки. Но оказалось, что настоящая причина, по которой я получал ошибки, заключалась в том, что я забыл вернуть записи в конце оператора if. Помните: ВСЕГДА ДЕЛАЙТЕ МАЛЕНЬКОЕ ДЕЛО.

Петли

Далее были петли. У меня уже было общее представление о том, как они работают. Но мало ли я знал, я собирался быть брошенным на петлю.

// While Loop
const myArray = [];

let i = 5;
while (i >= 0) {
  myArray.push(i);
  i--;
}
// My Solution

// For Loops
const myArray = [];

for (let i = 1; i <= 5; i++) {
  myArray.push(i);
}

// Iterating Odd Numbers
const myArray = [];

for (let i = 1; i <= 9; i += 2) {
  myArray.push(i);
}

// Backwards Counting
const myArray = [];

for (let i = 9; i >= 0; i -=2) {
  myArray.push(i);
}

// Arrays and For Loops
const myArr = [2, 3, 4, 5, 6];

let total = 0;
for (let i = 0; i < myArr.length; i++) {
  total += myArr[i];
}

// Double For Loops
function multiplyAll(arr) {
  let product = 1;
  for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr[i].length; j++) {
      product = product * arr[i][j];
    }
  }
  return product;
}

multiplyAll([[1, 2], [3, 4], [5, 6, 7]]);

// Do...While Loops
const myArray = [];
let i = 10;

do {
  myArray.push(i);
  i++;
} while (i < 5);

// Recursion
function sum(arr, n) {
  if (n <= 0) {
    return 0;
  } else if (n > 0) {
    return sum(arr, n - 1) + arr[n -1];
  }
}

Видите, что я имею в виду?!? Я написал слишком много циклов за один день. Затем я сделал еще один большой проект под названием «Поиск профиля». Они хотели, чтобы я просмотрела все имена и проверила, их ли это имя.

// Setup
const contacts = [
  {
    firstName: "Akira",
    lastName: "Laine",
    number: "0543236543",
    likes: ["Pizza", "Coding", "Brownie Points"],
  },
  {
    firstName: "Harry",
    lastName: "Potter",
    number: "0994372684",
    likes: ["Hogwarts", "Magic", "Hagrid"],
  },
  {
    firstName: "Sherlock",
    lastName: "Holmes",
    number: "0487345643",
    likes: ["Intriguing Cases", "Violin"],
  },
  {
    firstName: "Kristian",
    lastName: "Vos",
    number: "unknown",
    likes: ["JavaScript", "Gaming", "Foxes"],
  },
];

function lookUpProfile(name, prop) {
  // Only change code below this line
  for (let i= 0; i< contacts.length; i++) {
    if (contacts[i].firstName === name) {
    if (contacts[i].hasOwnProperty(prop)) {
      return contacts[i][prop];
    } else {
      return "No such property";
    }
  }
}
  return "No such contact";
  // Only change code above this line
}

lookUpProfile("Akira", "likes");

Генерация случайных чисел

Это последний отрезок. Я должен был сделать простую генерацию чисел, и все было бы кончено.

// RandomFraction
function randomFraction() {
  return Math.random();
}

// Random whole number
function randomWholeNum() {
  return Math.floor(Math.random() * 10);
}

// Random Whole Numbers in a Range
function randomRange(myMin, myMax) {
  return Math.floor(Math.random() * (myMax - myMin + 1)) + myMin;
}

// ParseInt
function convertToInteger(str) {
  return parseInt(str);
}
convertToInteger("56");

Тернарный оператор

Так далеко в курсе, я узнал новые вещи. Тернарный оператор был всего лишь вопросительным знаком в конце утверждения. Его также называют условным оператором. Итак, давайте посмотрим, какие условия я могу предложить.

// First time using ternary
function checkEqual(a, b) {
  return a == b ? "Equal" : "Not Equal";
}

checkEqual(1, 2);

// Multiple Coniditional Ternary operators
function checkSign(num) {
  return (num === 0) ? "zero": (num >= 0) ? "positive" : "negative";
}

checkSign(10);

Мне нужно было закончить две последние проблемы с рекурсией. Хорошо, поехали!

// Only change code below this line
function countdown(n){
  if (n < 1) {
    return[];
  } else {
    const countArray = countdown(n - 1);
    countArray.unshift(n);
    return countArray;
  }
}
console.log(countdown(10));

// My last problem
// Only change code above this line

function rangeOfNumbers(startNum, endNum) {
  if (startNum > endNum) {
    return[];
  } else {
    let numbers = rangeOfNumbers(startNum, endNum - 1);
    numbers.push(endNum);
    return numbers;
  }
};

ДАСССС!!!!!!!!!!!!!!!!

Я сделал все 113 уроков. Я еще не закончил. Но теперь я знаком со всеми основными понятиями JavaScript, которые мне понадобятся. Наслаждайтесь остатком дня! Спасибо всем за поддержку!