Bài tập về nhà buổi 18

Các bài tập về Chuỗi.
Cơ bản về Array và một số ví dụ.

Bài 1: Cho trước mảng
const arr = [1, 2, 3, 4, 5, 6];

* Tạo mảng mới chứa bình phương của từng phần tử.
* Tạo mảng mới chứa các số chẵn trong mảng.
* Tạo mảng mới chứa các số bình phương nhưng chỉ lấy số lẻ.

const arr = [1, 2, 3, 4, 5, 6];

const getSquareOfNum = (arr) => {
  let newArr = [];
  for (let num of arr) {
    newArr[newArr.length] = num ** 2;
  }
  return newArr;
};
console.log(getSquareOfNum(arr)); //(6) [1, 4, 9, 16, 25, 36]

const getEvenNum = (arr) => {
  let newArr = [];
  for (let num of arr) {
    if (num % 2 === 0) newArr[newArr.length] = num;
  }
  return newArr;
};
console.log(getEvenNum(arr)); //(3) [2, 4, 6]

const getSquareOfOddNum = (arr) => {
  let newArr = [];
  for (let num of arr) {
    if (num % 2 !== 0) newArr[newArr.length] = num ** 2;
  }
  return newArr;
};
console.log(getSquareOfOddNum(arr)); //(3) [1, 9, 25]

Bài 2: Cho trước mảng
const names = [" hoang ", "AN", " f8 ", "Education"];

* Tạo mảng mới chứa các phần tử đã được xoá khoảng trắng thừa và viết thường toàn bộ.
=> Kết quả: ["hoang", "an", "f8", "education"]
* Tạo mảng mới viết chữ cái đầu hoa
=> Kết quả: (Hoang, An, F8, Education)

const names = [" hoang ", "AN", " f8 ", "Education"];

function transformArray(arr, callback) {
  let newArr = [];
  for (let name of arr) {
    newArr[newArr.length] = callback(name);
  }
  return newArr;
}

function toCleanLowerString(name) {
  return name.trim().toLowerCase();
}

function capitalizeFirst(name) {
  name = toCleanLowerString(name);
  return name[0].toUpperCase() + name.slice(1);
}

console.log(transformArray(names, toCleanLowerString));
//(4) ['hoang', 'an', 'f8', 'education']

console.log(transformArray(names, capitalizeFirst));
//(4) ['Hoang', 'An', 'F8', 'Education']

Bài 3: Cho trước mảng
const nums = [3, 7, 2, 9, 12, 15, 18];

* Lấy ra mảng mới chỉ chứa số lớn hơn hoặc bằng 10.
* Từ mảng mới trên, tạo mảng chỉ chứa số chia hết cho 3.
* Với mảng ban đầu, tạo mảng mới tăng gấp đôi nhưng chỉ giữ lại số lẻ.

const nums = [3, 7, 2, 9, 12, 15, 18];
function getNumGreaterThan10(arr) {
  let newArr = [];
  for (let num of arr) {
    if (num >= 10) {
      newArr[newArr.length] = num;
    }
  }
  return newArr;
}
console.log(getNumGreaterThan10(nums));

function getNumbersDivisibleBy3(arr) {
  let newArr = [];
  for (let num of arr) {
    if (num % 3 === 0) newArr[newArr.length] = num;
  }
  return newArr;
}
console.log(getNumbersDivisibleBy3(getNumGreaterThan10(nums)));

function getDoubleOddNumbers(arr) {
  let newArr = [];
  for (let num of arr) {
    if (num % 2 !== 0) {
      newArr[newArr.length] = num * 2;
    }
  }
  return newArr;
}
console.log(getDoubleOddNumbers(nums));

Bài 4: Cho trước mảng
const words = ["javascript", "php", "css", "html", "python", "java"];

* Lọc ra các từ có độ dài >= 5.
* Tạo mảng mới viết hoa toàn bộ.
* Tạo mảng mới viết ngược từng chuỗi (tpircsavaj, avaj...).

const words = ["javascript", "php", "css", "html", "python", "java"];

function filterLongWords(arr) {
  let newArr = [];
  for (let word of arr) {
    if (word.length >= 5) {
      newArr[newArr.length] = word;
    }
  }
  return newArr;
}
console.log(filterLongWords(words));

//Sử dụng lại function transformArray() ở bài 2
function toUpperCaseWords(word) {
  return word.toUpperCase();
}
console.log(transformArray(words, toUpperCaseWords));

//Sử dụng lại function transformArray() ở bài 2
function reverseString(word) {
  let newWord = "";
  for (let i = word.length - 1; i >= 0; i--) {
    newWord += word[i];
  }

  return newWord;
}
console.log(transformArray(words, reverseString));