Thứ Hai, 28 tháng 9, 2020

# Bài 8 Tìm hiểu 1 số từ khóa như callback, arr.map, arr.filter, arr.find, arr.reduce... trong Javascript

Lý Thuyết:

Từ khóa #callback:
Từ khóa dùng để biểu diễn cách dùng 1 hàm như tham số, hàm gọi hàm lồng nhau. Trường hợp này các bạn sử dụng thường xuyên hằng ngày nên mình sẽ k giới thiệu sâu nhé.

Từ khóa #arr.map: 
+ Phương thức map() tạo 1 mảng mới với kết quả trả về của việc gọi 1 function được thực thi trên tất cả phần tử trong mảng đó.
+ Phương thức map() gọi 1 chức năng thực thi trên tất cả các thành phần của mảng theo thứ tự
(*) Không thể thực thi trên mảng không có giá trị.
(*) Phương thức map() không làm thay đổi mảng ban đầu.

Từ khóa #arr.filter:
Dùng để lọc ra những phần tử thỏa điều kiện trong mảng.

Từ khóa #arr.find:
Khác với filter lọc ra tất cả các phần tử trong mảng thỏa điều kiện, còn find chỉ tìm và lấy ra phần tử đầu tiên thỏa điều kiện đó.

Từ khóa #arr.reduce:
Phương thức reduce() dùng để thực thi một hàm lên từng phần tử của mảng (từ trái sang phải) với một biến tích lũy để thu về một giá trị duy nhất.

Cách reduce() hoạt động


var arr = [1, 2, 3, 4, 5];

arr.reduce(function(item1, item2){

return item1 + item2;

})

callback1: a = 1, b = 2; 

callback2: a = 3, b = 3;

callback3: a = 5, b = 4;

callback4: a = 9, b = 5;

kết quả cuối cùng = 15

Bài Tập: 

// Bài 1: Sử dụng reduce để tính tổng các phần tử trong mảng
var arr = [1, 2, 4, 5];
console.log(a, b);
arr.reduce(function(a, b){
return a + b;
}) (*) Chạy chương trình bằng tay: + Đầu tiên 2 biến a, b sẽ lần lượt được gán giá trị 1, 2 trong mảng, kết quả sau cùng được gán cho a
b = 4. Cứ như vậy cho đến khi gán hết tất cả các phần tử trong mảng.

// Bài 2: Trả về 1 mảng chứa nhiều mảng con
var arr = [[0, 1], [2, 3], [4, 5], [6, 7]];
arr.reduce(function(a,b){
    // sử dụng phương thức concat() để nối 2 mảng lại với nhau.
return a.concat(b);
})
(*) Chạy chương trình bằng tay: cách hoạt động tương tự như bài 1 nên mình sẽ không lặp lại ở đây
// Bài 3: Đếm số lần xuất hiện của phần tử trong 1 mảng con
var names = ["Băng", "Quốc Anh", "Đăng", "Quảng", "Băng", "Ánh", "Hành", "Lâm", "Hành"];
var result = names.reduce(function(count, item){
if(item === "Lâm"){
return count + 1;
}else{
return count;
}
}, 0)
result;

Không có nhận xét nào:

Đăng nhận xét