10 Cách sử dụng toán tử Spread trong JavaScript

Ngày đăng: 18/01/2021   -    Cập nhật: 18/01/2021
Mình chắc chắn bạn đã nghe nói về toán tử spread trong JavaScript (Ký hiệu dấu 3 chấm ...).


Nói thật, spread là một trong những toán tử mạnh nhất mà JavaScript cung cấp có thể nói là:



SPREAD ...
A MÂY ZING GÚT CHÓP


Toán tử spread có thể được sử dụng để giải quyết nhiều vấn đề bạn có thể gặp trong JavaScript. Trong bài này, bạn sẽ tìm hiểu về 10 cách sử dụng toán tử để giải quyết các vấn đề đó.


10 Cách sử dụng toán tử Spread trong JavaScript


Ở dạng cơ bản, toán tử spread trông giống như ba dấu chấm.



...
 


Mục lục bài viết:


Cách #1: Coppy một mảng bằng toán tử Spread



Chúng ta có thể sử dụng toán tử spread để sao chép một mảng, tuy nhiên đây vẫn là một bản sao nông (shalow clone).


  • Có nghĩa là chúng ta nhân đôi để tạo ra một bản sao mới, bản gốc sẽ giữ nguyên.


Giả sử chúng ta có một mảng tên là arr1 và chúng ta muốn tạo một bản sao của mảng này được gọi là arr2.



const arr1[1, 2, 3];
const arr2[...arr1];
 
console.log(arr2);
// Kết quả:
// [ 1, 2, 3 ]
 


Vì thế, bằng cách này chúng ta có thể sao chép một mảng cơ bản.


> Lưu ý: Nó không hoạt động đối với mảng nhiều cấp hoặc mảng có ngày tháng hoặc hàm.



Cách #2: Kết hợp các mảng



Giả sử bạn có 2 mảng mà bạn muốn hợp nhất thành một, điều này xảy ra khá thường xuyên và chúng ta có thể sử dụng phương thức concat.


Tuy nhiên, toán tử spread làm cho cách này dễ dàng hơn như bạn có thể thấy bên dưới.




const arr1[1, 2, 3];
const arr2[4, 5, 6];
 
const arr3[...arr1, ...arr2];
console.log(arr3);
// [ 1, 2, 3, 4, 5, 6 ]
 


Bây giờ, hai mảng arr1 và arr2 được kết hợp thành mảng arr3.


Bạn có thể sắp xếp vị trí khác nhau để tạo nên các mảng khác nhau, ví dụ:




const arr1[1, 2, 3];
const arr2[4, 5, 6];

const arr3 = [...arr2, ...arr1];
console.log(arr3);
// [4, 5, 6, 1, 2, 3];
 


Đây là một cách tốt để kết hợp các mảng, số lượng bạn có thể thêm là vô hạn nên bạn có thể tiếp tục thêm toán tử spread nếu muốn kết hợp nhiều mảng.


Ví dụ:




const arr5 = [...arr1, ...arr2, ...arr3, ...arr4];
 


Cách #3: Thêm phần tử vào mảng



Giả sử bạn có một mảng, nhưng bạn cần thêm một hoặc nhiều phần tử vào đó.


Trước đây bạn có thể tận dụng array.push như thế này:




let arr1 = [123];

arr1.push(4);
console.log(arr1);
// [1, 2, 3, 4]
 


Nhưng toán tử spread cũng làm được tốt và đẹp hơn.



let arr1 = [123];

// Thêm phần tử vào mảng bằng toán tử Spread
arr1 = [...arr14];
console.log(arr1);

// [1, 2, 3, 4]
 


Như bạn có thể thấy, mảng hiện có của chúng ta đã được thêm phần tử vào cuối.


Bạn thậm chí có thể thêm nhiều phần tử, nhiều loại dữ liệu:




let arr1 = [123];

arr1.push(45"ABC");
console.log(arr1);
// [1, 2, 3, 4, 5, "ABC"]
 


Cách #4: Thêm thuộc tính vào đối tượng



Giả sử bạn có một đối tượng là SinhVien, nhưng nó thiếu thuộc tính tuoi.



const SinhVien = {
    ten: "Ngọc Anh",
    gioiTinh: "Nữ"
};
 


Để thêm tuổi cho đối tượng SinhVien này, chúng ta lại có thể sử dụng toán tử spread.



// Thêm thuộc tính cho đối tượng
// bằng toán tử spread
const ketQua = {...SinhVientuoi: 18 };
 



Toàn bộ thiết lập sẽ như thế này:



const SinhVien = {
    ten: "Ngọc Anh",
    gioiTinh: "Nữ"
};

// Thêm thuộc tính cho đối tượng
// bằng toán tử spread
const ketQua = {...SinhVientuoi: 18 };

// { ten: "Ngọc Anh", gioiTinh: "Nữ", tuoi: 18 }
 


Cách #5: Spread kết hợp với Math()



Giả sử bạn có một mảng số và bạn muốn lấy giá trị nhỏ nhất, cao nhất hoặc tổng của những số này.


Mảng đầu vào của chúng ta sẽ trông như sau:




const arr1 = [1, -1069];
 


Để có được số nhỏ nhất, chúng ta có thể sử dụng toán tử spread và phương thức Math.min()



const arr1 = [1, -1069];

const min = Math.min(...arr1);
console.log(min);
// -1
 


Điều này sẽ xuất ra -1 vì đó là số nhỏ nhất, hãy thử và xóa -1 khỏi mảng bạn sẽ thấy giá trị nhỏ nhất sẽ trở thành 0.


Để có được số lớn nhất, chúng ta có thể sử dụng phương pháp Math.max()




const arr1 = [1, -1069];

const max = Math.max(...arr1);
console.log(max);
// 9
 


Như bạn có thể thấy, giá trị lớn nhất là 9, nếu chúng ta bỏ 9 đi, nó sẽ trả về 6.


Còn nếu bạn không sử dụng toán tử Spread, chúng ta nhận được kết quả như sau:




const arr1 = [1, -1069];

const max = Math.max(arr1);
console.log(max);
// NaN
 


Cách #6: Truyền mảng như đối số với toán tử spread



Giả sử, chúng ta có một hàm nhận 3 đối số như sau:



const cong3So = (x1x2x3=> {
    // Tổng 3 số
    console.log(x1 + x2 + x3);
}
 


Chúng ta có thể gọi hàm này theo cách sau:



// Truyền đối
cong3So(123);
 


Tuy nhiên, khi lập trình web, ứng dụng thực tế, chúng ta không thể thể nào mà thêm từng đối số "cứng" như thế này.


Thông thường, chúng ta sẽ có dữ liệu nằm trong một mảng:




const arr1 = [123];
 


Do đó, cách đơn giản là truyền mảng như đối số bằng cách sử dụng toán tử Spread.



const arr1 = [123];

cong3So(...arr1);
// 6
 


Như bạn có thể thấy, chương trình chạy ngon lành.


Khi đó, nếu có giá trị mới, chúng ta chỉ cần update nó vào mảng là được.


Toàn bộ chương trình trên sẽ như thế này:




const cong3So = (x1x2x3=> {
    // Tổng 3 số
    console.log(x1 + x2 + x3);
}

const arr1 = [123];
// Truyền mảng như đối số
cong3So(...arr1);
// 6
 



> Chú ý: Nếu muốn học lập trình web nhanh theo tiêu chuẩn Doanh nghiệp, bạn có thể tham gia ngay KHÓA HỌC JAVA WEB hoặc KHÓA HỌC PHP WEB tại NIIT - ICT Hà Nội.


Cách #7: Truyền tham số không giới hạn cho một hàm



Giả sử bạn có một hàm nhận đối số không giới hạn, giờ thì làm thế nào?



const myFunc = (...args=> {
    console.log(args);
};
 


Nếu bây giờ ta gọi hàm, truyền vào nó nhiều đối số:



myFunc(1'a'new Date());
 


Kết quả sẽ được như sau:



[
    1,
    'a',
    Date {
        __proto__: Date {}
    }
]
 


Cách #8: Chuyển một nodeList thành một mảng



Giả sử bạn đã sử dụng toán tử spread để lấy tất cả các thẻ div trên trang của mình. Đây sẽ là một nodeList.


Sau đó, chúng ta có thể tận dụng toán tử spread để chuyển đổi nodeList này thành một mảng.




const el = [...document.querySelectorAll('div')];
console.log(el);

// (3) [div, div, div]
 


Ở đây bạn có thể thấy chúng ta lấy được ba thẻ div từ DOM.


Bây giờ chúng ta có thể dễ dàng lặp qua các phần tử này vì chúng ở định dạng mảng.




const el = [...document.querySelectorAll('div')];
el.forEach(item => {
    console.log(item);
});
 
// <div></div>
// <div></div>
// <div></div>
 


Cách #9: Phép gán hủy cấu trúc đối tượng



Nếu bạn đã quen thuộc với phép gán hủy cấu trúc đối tượng (Destructuring), bạn có thể thấy toán tử spread làm việc này rất tốt.


Giả sử chúng ta lại có một đối tượng cho SinhVien:




const SinhVien = {
    ten: "Ngọc Anh",
    gioiTinh: "Nữ",
    tuoi: 18
};
 


Bây giờ chúng ta có thể hủy cấu trúc đối tượng này thành các biến đơn bằng cách sử dụng toán tử spread.



const { ten, ...thongTin } = SinhVien;
console.log(ten);
console.log(thongTin);
// Ngọc Anh
// { gioiTinh: "Nữ", tuoi: 18 }
 


Như bạn có thể thấy, chúng ta đã phân tích cú pháp đối tượng SinhVien và hủy tên đầu tiên thành biến ten và phần còn lại của đối tượng vào biến thongTin.


Cách #10: Tách chuỗi thành ký tự



Cách sử dụng toán tử spread cuối cùng mà mình muốn giới thiệu cho bạn đó chính là cách tách một chuỗi thành từng ký tự.


Giả sử chúng ta có chuỗi sau:




const chuoi = "Xin Chào";
 


Sử dụng toán tử spread trên chuỗi này, để nhận về một mảng các ký tự:



const chuoi = "Xin Chào";

const arr = [...chuoi];
console.log(arr);

// ["X", "i", "n", " ", "C", "h", "à", "o"]
 


Tổng kết



Như vậy, qua bài hướng dẫn này, mình đã giúp các bạn biết 10 cách sử dụng toán tử Spread trong JavaScript. Hi vọng rằng nó giúp bạn hiểu rõ hơn toán tử cực kỳ hữu ích này để quá trình HỌC LẬP TRÌNH WEB của bạn dễ thở hơn.


---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Học Lập trình chất lượng cao (Since 2002). Học thực tế + Tuyển dụng ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0968051561
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
 
#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python
Bình luận Facebook
Khóa học liên quan đến bài viết

Khóa học PHP Full stack [2023] cho người mới bắt đầu

96 giờ
Khóa học Lập trình PHP Full stack, phiên bản cập nhật lần thứ 8. Dạy Lập trình PHP bài bản từ Front end đến Back end + Laravel. Hướng dẫn làm 2 Dự Án Web lớn

KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG

50 giờ
Khóa học giúp học viên sử dụng thành thạo ngôn ngữ Lập trình Python (3x). Hiểu và phát triển được Ứng dụng Web với Django Framework. Học thực hành với Giảng viên cao cấp.

Lập trình PHP với Laravel Framework

42 giờ
Khóa học Lập trình PHP với Laravel Framework được NIIT - ICT HÀ NỘI xây dựng nhằm hoàn thiện kỹ năng lập trình web các các bạn đã biết Lập trình Web PHP thuần.

Khóa học Java Full stack (IJFD)

104 giờ
Học lập trình Java Fullstack với khóa học được xây dựng theo lộ trình bài bản, từ JAVA CƠ BẢN đến JAVA WEB và nâng cao về JAVA FRAMEWORK như: Spring Boot, Hibernate
Mục lục
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!