Bài tập Javascript cơ bản – Kiểu dữ liệu đối tượng

Có 2 thí sinh A và B khai báo như sau:

let thiSinhA = {
    hoVaTen: "Nguyen Van A",
    chieuCao: 1.67,
    canNang: 67,
    diemSo: {
        toan: 9,
        ly: 8,
        hoa: 8
    }
};
let thiSinhB = {
    hoVaTen: "Tran Thi B",
    chieuCao: 1.6,
    canNang: 50,
    diemSo: {
        toan: 8,
        ly: 9,
        hoa: 7
    }
};

Bài tập 1

Viết hàm in ra họ tên và số điểm trung bình có số điểm trung bình cao nhất

xuatThiSinhDiemTBLonNhat = () => {
    let DTBA =
        (thiSinhA.diemSo.toan + thiSinhA.diemSo.ly + thiSinhA.diemSo.hoa) / 3;
    let DTBB =
        (thiSinhB.diemSo.toan + thiSinhB.diemSo.ly + thiSinhB.diemSo.hoa) / 3;
    if (DTBA > DTBB) {
        console.log("Diem trung binh cao hon la", thiSinhA.hoVaTen + " " + DTBA);
    } else {
        console.log("Diem trung binh cao hon la", thiSinhB.hoVaTen) + " " + DTBB;
    }

}

Bài tập 2

Viết hàm reset điểm tất cả các môn của một thí sinh
về 0

function resetDiem(obj) {
    obj.diemSo.ly = 0;
    obj.diemSo.hoa = 0;
    obj.diemSo.toan = 0;
}

Bài tập 3

Cho danh sách thí sinh như sau:

let danhSachthisinh = [thiSinhA, thiSinhB];

Viết hàm trả về điểm số lớn nhất trong kết quả các thí sinh

function diemSoLonNhat(danhSach) {
    let max = 0;
    for (let i = 0; i < danhSach.length; i++) {
        let diemSo = danhSach[i].diemSo;
        if (diemSo.toan > max) {
            max = diemSo.toan;
        }
        if (diemSo.ly > max) {
            max = diemSo.ly;
        }
        if (diemSo.hoa > max) {
            max = diemSo.hoa;
        }
    }
    return max;
}
let max = diemSoLonNhat(danhSachthisinh);
console.log("Diem so lon nhat", max);

Javascript cơ bản: Kiểu dữ liệu đối tượng (Object)

Các kiểu dữ liệu cơ bản Javascript

Javascript có các kiểu dữ liệu sau:

Primitive Data (kiểu nguyên thủy)

  • string
  • number
  • boolean
  • undefined

Complex Data (kiểu phức tạp)

  • object
  • function

Chúng ta có thể kiểm tra kiểu của biến bằng toán tử typeof

typeof 15;  // Returns: "number"
typeof 'hello';  // Returns: "string"

Kiểu dữ liệu object

Kiểu đối tượng trong javascript bao gồm: Object, Array, Date.
Ví dụ khai báo một object và truy cập thông tin của nó như sau:

let nhanVien = {
  ten: 'Nguyen Van A',
  namSinh: 1995,
  conSoMayMan: [5, 9],
  choiTheThao : (monTheThao) => { console.log(`choi mon the thao ${monTheThao}`);}
}

// truy cập thuộc tính:
console.log(nhanVien.ten);
nhanVien.namSinh = 1990;

// truy cập phương thức:
nhanVien.choiTheThao('Đá bóng');

Tham trị và tham Chiếu

Khi truyền object vào trong hàm, nếu hàm thay đổi giá trị của object thì khi ra khỏi hàm, giá trị của object sẽ thay đổi theo điều này trái ngược lại với kiểu dữ liệu nguyên thủy.

So sánh tham trị và tham chiếu trong Javscript

Truyền tham trị của biến vào hàm

function changeValue(x)
{
    // đổi giá trị của x trong hàm
    x = 5;
}
 
var x = 4;
console.log('x trước khi gọi hàm:', x); 
changeValue(x); 
console.log('x sau khi gọi hàm không thay đổi:', x);


Truyền tham chiếu của biến vào hàm

function changeValueObject(obj)
{
    obj.value = 20;
}
var obj = {};
 
console.log(obj); // obj có giá trị rỗng {}
 
changeValueObject(obj);
 
console.log(obj); // obj có giá trji là {value:20}

Bài tập Javascript cơ bản – Kiểu dữ liệu String (Chuỗi)

một String (chuỗi) là một dãy các ký tự, các khai báo string trong javascipt

let str = "This is a String";

Với khai báo trên các kí tự được sắp xếp liên tiếp nhau trong bộ nhớ
Vd với chuỗi trên index từ 0 -> 15


kí tự được sắp xếp liên tiếp nhau trong bộ nhớ

nguồn Tham khảo bài viết:
https://o7planning.org/vi/12199/huong-dan-ecmascript-string

Bài tập 1

Viết hàm trả về 1 kí tự của chuỗi s tại vị trí i
Ví dụ vối biến str được khai báo như trên hàm charAt(str, 1) trả về giá trị là ‘h’

function charAt(s, i) {
    return s[i];
}


Bài tập 2

Viết hàm trả về số lượng các nguyên âm trong 1 chuỗi s

function demNguyenAm(s) {
    let dem = 0;
    for (let i = 0; i <= s.length; i++) {
        if (
            s[i] == "a" ||
            s[i] == "e" ||
            s[i] == "o" ||
            s[i] == "i" ||
            s[i] == "u" ||
            s[i] == "y"
        ) {
            dem++;
        }
    }
    return dem;
}

Tài liệu học Javascript cơ bản

Người mới học javascript cơ bản nên tập trung vào các cấu trúc lặp, các hàm (function) và các kiểu dữ liệu của ngôn ngữ, sau đây là một số link về các chủ đề cho các bạn tham khảo.

Toán tử

Vòng lặp for – while

Switch case

https://freetuts.net/lenh-switch-case-trong-javascript-402.html

Break, continue

https://freetuts.net/lenh-break-continue-trong-javascript-382.html

Chuỗi (string)

chuyển đổi kiểu dữ liệu (data type)

Hàm

Lập trình hướng đối tượng – OOP

Đặc điểm của lập trình hướng đối tượng (OOP):

  • tính đóng gói
  • trừu tượng
  • kế thừa
  • đa hình.

Tiếng anh lần lượt là:

  • encapsulation
  • abstraction
  • inheritance
  • polymorphism

OOP explain

Tài Liệu tiếng Anh

Video

Quiz

Bài tập Javascript cơ bản – Vòng lặp While

Trong phần này, các bài tập sẽ dùng vòng while, không dùng vòng for để lặp. So sánh các dùng của for while trong javascript và xem sự giống nhau và khác nhau sau đây

so sánh vòng lặp for - while javascript

Bài tập 1

Viết hàm có đầu vào là số tự nhiên n, hàm trả về tổng S của dãy sau:

S = 1/n + 2/n + 3/n + … + n/n

tongBieuThucChia = n => {
    let S = 0;
    let i = 1;
    while (i <= n) {
        S = S + i / n;
        i++;
    }
    return S;
};
let tong = tongBieuThucChia(4);
console.log(tong);

Bài tập 2

Viết hàm In ra các số theo chiều ngược lại của mảng a, Ví dụ:
let a = [1, 2, 3], thì in ra a thành 3 , 2, 1

function printReverseOrder(a) {
    let i = a.length - 1;
    let chuoi = "";
    while (i >= 0) {
        chuoi = chuoi + a[i];
        if (i != 0) {
            chuoi += ",";
        }
        i--;
    }
    console.log(chuoi);
}
let a = [3, 4, 7];
printReverseOrder(a);

Bài tập 3

Viết hàm xuất ra bảng cửu chương của 1 số n,

Ví dụ bảng cửu chương khi n = 2:
2×1=2
2×2=4
2×3=6
2×4=8
2×5=10
2×6=12
2×7=14
2×8=16
2×9=18
2×10=20

function inBangCuuChuong(n) {
    let i = 1;
    while (i <= 10) {
        let a = n * i;
        hang = n + "*" + i + "=" + a;
        console.log(hang);
        i++;
    }
}
inBangCuuChuong(2);


Bài tập 4

Viết hàm đầu vào là số n, trả về tổng S cộng dồn các số lẻ từ 1 đến n, nhưng đến khi nào giá trị tổng vượt quá 15 thì không cộng thêm nữa mà trả về.
Ví dụ, nếu n:

  • n = 6 thì S = 1+3+5 = 9
  • n = 8 trở đi, thì S chỉ = 1+3+5+7 (16) (vì chỉ cần lấy tổng bắt đầu > 15)
function tongLeVuotQua15(n) {
    let i = 1;
    let S = 0;
    while (i <= n) {
        if (i % 2 != 0) {
            S += i;
            if (S > 15) {
                return S;
            }
        }
        i++;
    }
    console.log(S);
}
tongLeVuotQua15(6);

Bài tập 5

Viết hàm đầu vào vào 1 số nguyên n ở hệ thập phân, yêu cầu in ra số ở hệ nhị phân.
Ví dụ: n = 7 thì in ra 111.
Xem thuật toán từ các link dưới đây:

function ToBinaryNumber(n) {
}

Bài tập Javascript cơ bản – Vòng lặp For

Bài tập 1

Viết hàm kiểm tra số n có phải là số chẵn hay không, hàm trả về giá trị boolean (return true hoặc return false).

 Sochan = x => {
  if (x % 2 == 0) {
    return true;
  } else {
    return false;
  }
}; 

Bài tập 2

Viết hàm in các số chẵn từ 0 tới số n

 daysochan = n => {
  for (let i = 0; i <= n; i++) {
    if (Sochan(i) == true) {
      console.log(i);
    }
  }
}; 

Bài tập 3

Viết hàm kiểm tra số n có phải là số nguyên tố, hàm trả về giá trị boolean (return true hoặc return false).

songuyento = n => {
  for (let i = 2; i < n; i++) {
    if (n % i == 0) {
      return false;
    }
  }

  return true;
}; 

Bài tập 4

Viết hàm trả về tổng các số chẵn trong mảng a.

tongsochan = a => {
  let sum = 0;
  for (let i = 0; i < a.length; i++) {
    if (a[i] % 2 == 0) {
      sum = sum + a[i];
    }
  }
  return sum;
}; 

Bài tập 5

Viết hàm in ra dãy số nguyên tố bé hơn hoặc bằng n

daysonguyento = n => {
  for (let i = 2; i < n; i++) {
    let laSNT = songuyento(i);

    if (laSNT) {
      console.log(i);
    }
  }
};

Bài tập 6

cho Mảng 2 chiều (ma trận) sau, in ra các số và tổng của nó:

let b = [[1, 2, 3], [3, 7, 9]];

let s = "";
let sum = 0;
for (let i = 0; i < 2; i++) {
  for (let j = 0; j < 3; j++) {
    // console.log(b[i][j]);
    s = s + " -- " + b[i][j];
    sum = sum + b[i][j];
  }
}
console.log(s, sum);