Tìm tên học sinh có điểm toán và lý lớn nhất có trong lớp
Chào các bạn nhé
Trong bài viết này mình sẽ hướng dẫn bạn tìm kiếm. Tìm kiếm ở đây bây giờ là học sinh có điểm toán và điểm lý lớn nhất có trong lớp.
Trước khi bắt đầu thì việc đầu tiên chúng ta cần làm là
- Tạo danh sách học sinh
Ở đây mình sẽ tạo class random nó cho nhanh, Random danh sách học sinh theo số lượng. Tùy cơ ứng biến.
Và đây là mã của nó.
1class Student { 2 // Tao hoc sinh 3 constructor(name, toan, ly) { 4 this.name = name; 5 this.toan = toan; 6 this.ly = ly; 7 } 8 9 /** 10 * Phương pháp tỉnh tạo danh sách học sinh 11 * @param {number} number - Số lượng danh sách học sinh cần tạo 12 * @returns [{ name, toan, ly }, ...etc] 13 */ 14 static createStudent(number) { 15 let arrStudent = []; 16 for (let i = 0; i < number; i++) { 17 arrStudent.push( 18 new this( 19 "Hồ quang trí " + i, 20 parseInt(Math.random() * 11), // Random điểm toán 21 parseInt(Math.random() * 11) // Random điểm lý 22 ) 23 ); 24 } 25 return arrStudent; // [{name: "Hồ quang trí 0", toan: 0, ly: 0}, ...etc] 26 } 27} 28 29 30let arrStudent = Student.createStudent(10); 31 32// Đến đây là chúng ta có danh sách học sinh theo số lượng chúng ta truyền vào. 33// Log nó ra thử 34console.log(arrStudent); // [{name: "Hồ quang trí 0", toan: 0, ly: 0}, ...etc]
- Tạo phương pháp tìm điểm học sinh
1 /** 2 * Phương pháp tỉnh tìm điểm học sinh lớn 3 * @param {array} arrStudent - Mảng các học sinh 4 * @returns {toan: 0, ly: 0} 5 */ 6 static getDiemStudent(arrStudent) { 7 let objDiem = { 8 toan: 0, 9 ly: 0, 10 }; 11 for (let student of arrStudent) { 12 let { toan, ly } = student; 13 console.log(toan, ly); 14 if (toan >= objDiem.toan && ly >= objDiem.ly) { 15 objDiem = { 16 toan: toan, 17 ly: ly, 18 }; 19 } 20 } 21 return objDiem; 22 }
- Đến đây code của chúng ta nó như thế này
1class Student { 2 // Tao hoc sinh 3 constructor(name, toan, ly) { 4 this.name = name; 5 this.toan = toan; 6 this.ly = ly; 7 } 8 9 /** 10 * Phương pháp tỉnh tạo danh sách học sinh 11 * @param {number} number - Số lượng danh sách học sinh cần tạo 12 * @returns [{ name, toan, ly }, ...etc] 13 */ 14 static createStudent(number) { 15 let arrStudent = []; 16 for (let i = 0; i < number; i++) { 17 arrStudent.push( 18 new this( 19 "Hồ quang trí " + i, 20 parseInt(Math.random() * 11), // Random điểm toán 21 parseInt(Math.random() * 11) // Random điểm lý 22 ) 23 ); 24 } 25 return arrStudent; // [{name: "Hồ quang trí 0", toan: 0, ly: 0}, ...etc] 26 } 27 28 /** 29 * Phương pháp tỉnh tìm điểm học sinh lớn 30 * @param {array} arrStudent - Mảng các học sinh 31 * @returns {toan: 0, ly: 0} 32 */ 33 static getDiemStudent(arrStudent) { 34 let objDiem = { 35 toan: 0, 36 ly: 0, 37 }; 38 for (let student of arrStudent) { 39 let { toan, ly } = student; 40 console.log(toan, ly); 41 if (toan >= objDiem.toan && ly >= objDiem.ly) { 42 objDiem = { 43 toan: toan, 44 ly: ly, 45 }; 46 } 47 } 48 return objDiem; 49 } 50} 51 52let arrStudent = Student.createStudent(10); 53 54// Đến đây là chúng ta có danh sách học sinh theo số lượng chúng ta truyền vào. 55// Log nó ra thử 56console.log(arrStudent); // [{name: "Hồ quang trí 0", toan: 0, ly: 0}, ...etc] 57 58let objDiem = Student.getDiemStudent(arrStudent); 59 60// objDiem ở đây là ngẩu nhiên tạo điểm nhé. 61console.log(objDiem); // {toan: 9, ly: 10}
- Tạo phương pháp tìm tên học sinh dựa trên điểm số
1 /** 2 * Phương pháp tỉnh tìm tên học sinh 3 * @param {array} arrStudent - Mảng học sinh 4 * @param {object} objDiem - Object điểm để so sánh 5 * @returns ["Hồ quang trí 1", ...etc] 6 */ 7 static getNamesHocSinh(arrStudent, objDiem) { 8 let arrNameStudents = []; 9 for (let student of arrStudent) { 10 if (student.toan === objDiem.toan && student.ly === objDiem.ly) { 11 arrNameStudents.push(student.name); 12 } 13 } 14 return arrNameStudents; 15 }
Và đây là code hoàn chỉnh của nó
1class Student { 2 // Tao hoc sinh 3 constructor(name, toan, ly) { 4 this.name = name; 5 this.toan = toan; 6 this.ly = ly; 7 } 8 9 /** 10 * Phương pháp tỉnh tạo danh sách học sinh 11 * @param {number} number - Số lượng danh sách học sinh cần tạo 12 * @returns [{ name, toan, ly }, ...etc] 13 */ 14 static createStudent(number) { 15 let arrStudent = []; 16 for (let i = 0; i < number; i++) { 17 arrStudent.push( 18 new this( 19 "Hồ quang trí " + i, 20 parseInt(Math.random() * 11), // Random điểm toán 21 parseInt(Math.random() * 11) // Random điểm lý 22 ) 23 ); 24 } 25 return arrStudent; // [{name: "Hồ quang trí 0", toan: 0, ly: 0}, ...etc] 26 } 27 28 /** 29 * Phương pháp tỉnh tìm điểm học sinh lớn 30 * @param {array} arrStudent - Mảng các học sinh 31 * @returns {toan: 0, ly: 0} 32 */ 33 static getDiemStudent(arrStudent) { 34 let objDiem = { 35 toan: 0, 36 ly: 0, 37 }; 38 for (let student of arrStudent) { 39 let { toan, ly } = student; 40 console.log(toan, ly); 41 if (toan >= objDiem.toan && ly >= objDiem.ly) { 42 objDiem = { 43 toan: toan, 44 ly: ly, 45 }; 46 } 47 } 48 return objDiem; 49 } 50 51 /** 52 * Phương pháp tỉnh tìm tên học sinh 53 * @param {array} arrStudent - Mảng học sinh 54 * @param {object} objDiem - Object điểm để so sánh 55 * @returns ["Hồ quang trí 1", ...etc] 56 */ 57 static getNamesHocSinh(arrStudent, objDiem) { 58 let arrNameStudents = []; 59 for (let student of arrStudent) { 60 if (student.toan === objDiem.toan && student.ly === objDiem.ly) { 61 arrNameStudents.push(student.name); 62 } 63 } 64 return arrNameStudents; 65 } 66} 67 68let arrStudent = Student.createStudent(100); 69 70// Đến đây là chúng ta có danh sách học sinh theo số lượng chúng ta truyền vào. 71// Log nó ra thử 72console.log(arrStudent); // [{name: "Hồ quang trí 0", toan: 0, ly: 0}, ...etc] 73 74let objDiem = Student.getDiemStudent(arrStudent); 75 76// objDiem ở đây là ngẩu nhiên tạo điểm nhé. 77console.log(objDiem); // {toan: 9, ly: 10} 78 79let nameHocSinhToanLy = Student.getNamesHocSinh(arrStudent, objDiem); 80 81// Vì mình đang dùng random nên tên cũng sẽ ngẩu nhiên nhé 82console.log(nameHocSinhToanLy); // ['Hồ quang trí 51']
Lưu ý: vì điều kiện tìm điểm lớn nhất ở đây cả toán và lý
Nên chúng có thể xảy ra 3 trường hợp.
- Điểm toán lớn nhất nhưng điểm lý thì chưa chắc lớn nhất
- Điểm lý lớn nhất nhưng điểm toán chưa chắc lớn nhất
- Hoặc cả điểm toán và điểm lý điều lớn nhất
Tất cả điều trên điều thuộc vào cách bạn tìm kiếm điểm số. Số lượng học sinh ít quá nên mình tăng lên 100.
Cuối cùng tùy cách bạn giải quyết. Cũng không có gì khó. Chúng ta cứ lần theo từng bước một. Ngành nào cũng vậy thôi. Lắp ghép với nhau lại cả.
Tất cả các ví dụ từ trước đến nay mình đều chưa tính đến lỗi.
Nên mọi thứ khi chạy xãy ra lỗi là đều có thể [😇😇😇😇😇😇]
- tìm kiếm
- học sinh
- giải thuật
- điểm
- js
- javascript
Các bài viết liên quan
Sắp xếp các ký tự trong chuỗi theo thứ tự tăng hoặc giảm
Áp dụng nó với phương pháp có sẵng và tự viết.Giải ThuậtĐếm số lượng các ký tự Hoa có trong chuỗi
Cùng nhau rèn luyện tư duy với chuỗi nhé. Đơn giản thôi.Giải ThuậtĐếm số lượng các ký tự trùng nhau có trong chuỗi
Cùng nhau đếm nào. Trả về object nhé. Tùy tình huống triển khaiGiải ThuậtLấy phần tử duy nhất có trong mảng
Bằng phương pháp có sẵng hoặc tự viếtGiải ThuậtJavascript là gì
Javascript là một ngôn ngữ lập trình. Được thiết kế dựa trên nguyên mẫu [prototype].Javascript