Một số khái niệm tăng kỹ năng JavaScript của bạn
Hiện nay thì JavaScript là một ngôn ngữ rất phổ biến và không thể thiếu trong các ứng dụng web. Môi trường JavaScript đã trở nên khổng lồ. Nó có hệ sinh thái của riêng nó với thư viện, frameworks, công cụ, quản lý package và các ngôn ngữ mới để biên dịch ra JavaScript như React, Vue,… ...
Hiện nay thì JavaScript là một ngôn ngữ rất phổ biến và không thể thiếu trong các ứng dụng web. Môi trường JavaScript đã trở nên khổng lồ. Nó có hệ sinh thái của riêng nó với thư viện, frameworks, công cụ, quản lý package và các ngôn ngữ mới để biên dịch ra JavaScript như React, Vue,… Trong bài viết này mình giới thiệu một số khái niệm tăng khả năng JavaScript, sẽ giúp bạn dễ dàng làm việc với JavaScript cũng như dễ dàng tiếp cận với các thư viện, frameworks,…
Destructuring Assignment
Destructuring Assignment là cú pháp cho phép lấy dữ liệu được lưu trữ bên trong Arrays hoặc Objects và gán chúng cho các biến riêng biệt
Ví dụ Destructuring Assignment với Object
1 2 3 4 5 6 7 8 9 10 11 | constobj={ name:'huynh', city:'Ha Noi' } const{name,city}=obj; console.log(name,city) // output tương ứng sẽ là: huynh, Ha Noi |
Nếu chúng ta muốn khi lấy properties của object với tên khác, chúng ta có thể đặt lại bằng cách như sau:
1 2 3 4 5 6 7 8 9 10 11 | constobj={ name:'huynh', city:'Ha Noi' } const{name:myName,city:myCity}=obj; console.log(myName,myCity) // output tương ứng sẽ là: huynh, Ha Noi |
Destructuring Assignment còn được sử dụng lấy các tham số được truyền cho một hàm. Ở trong ReactJs cũng thường xuyên gặp và được sử dụng rất nhiều
1 2 3 4 5 6 7 8 9 10 11 12 13 | constobj={ name:'huynh', city:'Ha Noi' } constmyInfor=({name,city})=>{ console.log(`Myinformation:${name}-${city}`); } myInfor(obj); // output: My information: huynh - Ha Noi |
Cú pháp Spread
Cú pháp spread đơn giản được biểu diễn bởi dấu 3 chấm: …
Cú pháp Spread cho phép duyệt qua các phần tử và truyền vào phương thức như các đối số có nghĩa là cho phép chuyển đổi một chuỗi thành nhiều argument (trong trường hợp gọi với hàm) hoặc thành nhiều phần tử (cho array)
1 2 3 4 5 6 7 8 9 10 | functionsum(x,y,z){ returnx+y+z; } constnumbers=[1,2,3]; console.log(sum(...numbers)); // output: 6 |
Cú pháp:
- Cho việc gọi hàm:
1 2 3 | myFunction(...iterableObj); |
- Cho array literals hoặc strings:
1 2 3 | [...iterableObj,'4','five',6]; |
- Cho object literals:
1 2 3 | letobjClone={...obj}; |
Cú pháp Rest
Rest cho phép chúng ta biểu diễn số lượng đối số không xác định dưới dạng một mảng.
1 2 3 4 5 6 7 8 9 10 | functionsum(...Args){ returnArgs.reduce((previous,current)=>{ returnprevious+current; }); } console.log(sum(1,2,3)); // output: 6 |
Cú pháp:
1 2 3 4 5 | functionmyFunction(a,b,...Args){ // ... } |
Array Methods
Trong JavaScript thì để thao tác với mảng rất thuận tiện vì JavaScript đã cung cấp cho chúng ta các array methods giúp chúng ta thực hiện biến đổi dữ liệu theo cách chúng ta cần.
Trong bài viết này mình giới thiệu với các bạn một số phương thức.
Đầu tiên là: map, filter, reduce. Cả 3 phương thức này đều là những cách hữu ích để chuyển đổi một mảng hoặc trả về một giá trị và có nhiều bạn đã nhầm lẫn các phương thức này. Vậy các phương thức này hoạt động và khác nhau như thế nào
map
- Tạo ra một mảng mới với kết quả được xử lý trong hàm cho mỗi phần phần tử mảng
- Không thực thi hàm cho các phần tử mảng không có giá trị
- Phương thức này không thay đổi mảng ban đầu
1 2 3 4 5 6 7 8 | constarr=[1,2,3]; constnewArr=arr.map(el=>el *2); console.log(newArr); // output: [2, 4, 6] |
filter
- Tạo ra một mảng chứa đầy tất cả các phần tử mảng qua điều kiện kiểm tra được xử lý trong hàm
- Không thực thi hàm cho các phần tử mảng không có giá trị
- Phương thức này không thay đổi mảng ban đầu
1 2 3 4 5 6 7 8 9 | constarr=[1,2,3]; constfiltered=arr.filter(el=>el===1||el===3); console.log(filtered); // [1, 3] |
reduce
- Giảm mảng thành một giá trị duy nhất.
- Thực thi một hàm được cung cấp cho mỗi giá trị của mảng (từ trái sang phải)
- Giá trị trả về của hàm được lưu trữ trong bộ tích lũy
- Không thực thi hàm cho các phần tử mảng không có giá trị
- Phương thức này không thay đổi mảng ban đầu
1 2 3 4 5 6 7 8 | constarr=[1,2,3]; constreduced=arr.reduce((total,current)=>total+current); console.log(reduced); // output: 6 |
find
- Trả về giá trị của phần tử đầu tiên trong một mảng qua điều kiện kiểm tra được xử lý trong hàm
- Nếu nó tìm thấy một phần tử mảng trong đó hàm trả về một giá trị đúng, find () trả về giá trị của phần tử mảng đó (và không kiểm tra các giá trị còn lại). Nếu không, nó trả về không xác định
1 2 3 4 5 6 7 8 9 | constarr=[1,2,3,4,5,6]; constfound=arr.find(el=>el>3); console.log(found); // output: 4 |
findIndex
- Trả về chỉ mục của phần tử đầu tiên trong một mảng qua điều kiện kiểm tra được xử lý trong hàm
- Nếu nó tìm thấy một phần tử mảng trong đó hàm trả về một giá trị thực, findIndex () trả về chỉ mục của phần tử mảng đó (và không kiểm tra các giá trị còn lại). Nếu không, nó trả về -1
1 2 3 4 5 6 7 8 | constarr=[1,2,3,4,2,5,2]; constfoundIndex=arr.findIndex(el=>el===2); console.log(foundIndex); // output: 1 |
indexOf
- Tìm kiếm mảng trong mảng theo điều kiện được chỉ định và trả về vị trí của nó.
- Tìm kiếm sẽ bắt đầu tại vị trí đã chỉ định hoặc ở đầu nếu không có vị trí bắt đầu nào được chỉ định và kết thúc tìm kiếm ở cuối mảng.
- Trả về -1 nếu không tìm thấy theo điều kiện. Nếu theo điều kiện item có mặt nhiều lần, phương thức indexOf trả về vị trí xuất hiện đầu tiên
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | constarr=[1,2,3,4,2,5,2]; constfoundIndex=arr.indexOf(2); console.log(foundIndex); // output: 1 constfoundIndex2=arr.indexOf(2,2);// indexOf(giá trị muốn tìm, vị trí bắt đầu tìm) console.log(foundIndex2); //output: 4 |
push
- Thêm phần tử mới vào cuối một mảng và trả về độ dài mới
1 2 3 4 5 6 7 8 9 10 11 12 13 | letarr=[0,1,2,3,4]; constpushed=arr.push(5); console.log(arr); // [0, 1, 2, 3, 4, 5] console.log(pushed); // 6 |
pop
- Loại bỏ phần tử cuối cùng của một mảng và trả về phần tử đó.
1 2 3 4 5 6 7 8 9 10 11 12 13 | letarr=[0,1,2,3,4,5]; constpopped=arr.pop(); console.log(arr); // [0, 1, 2, 3, 4] console.log(popped); // 5 |
shift
- Loại bỏ phần tử đầu tiên của một mảng và trả về phần tử đầu tiên đó
1 2 3 4 5 6 7 8 9 10 11 12 13 | letarr=[0,1,2,3,4,5]; constshifted=arr.shift(); console.log(arr); // [1, 2, 3, 4, 5] console.log(shifted); // 0 |
unshift
- Thêm các phần tử mới vào đầu một mảng và trả về độ dài mới.
1 2 3 4 5 6 7 8 9 10 11 12 13 | letarr=[0,1,2,3,4,5]; constunshifted=arr.unshift(6,7); console.log(arr); // [6, 7, 0, 1, 2, 3, 4, 5] console.log(unshifted);
Có thể bạn quan tâm
0
|