Hướng dẫn copy array object javascript - sao chép đối tượng mảng javascript
Nội dung bài viết Hai khái niệm shallow copy và deep copy trong ngành lập trình thì có thể nghe đến ngán lỗ tai. Chính vì vậy nếu bạn nào còn nhớ thì cách đây 2 năm tôi cũng đã viết một số bài về 2 khái niệm này. Và bài viết này tôi sẽ thêm những phương án mới với những tính năng gần đây. Trước tiên để hiểu shallow copy và deep copy là gì? Thì bạn không cần phải hiểu học thuật của nó. Cứ hiểu như tôi đây. Shallow copy giống như hai vợ chồng xài chung một tài khoản vậy. Thẻ ATM được clone ra thành 2 thẻ ATM. Vợ or chồng nhận lương thì 2 thẻ đó được cộng thêm tiền (Vì chung tài khoản mà). Ông chồng đi nhậu, cà thẻ thì 2 thẻ đó cũng mất tiền luôn... Nên sinh ra cãi nhau, vì vậy mỗi người một thẻ cho chắc ăn. Chính vì vậy mới có deep copy, vậy tiếp tục hiểu deep copy là gì?
Bây giờ tôi sẽ thử nghiệm các phương án về hai khái niệm trên để cho các bạn cũng như tôi xem xét lại một lần nữa. Đương nhiên là bài viết trước đó vẫn còn giá trị, bạn có thể tham khảo lại. Đây là cách mà các bạn thường làm để copy Array với việc sử dụng
Bạn có thể nhìn vào hình ảnh cho dễ, các bạn thấy đấy, khi chồng ăn nhậu mất 500K thì ATM của Vợ cũng bị trừ theo, Người ta gọi là giá trị tham chiếu đấy. CÒn bây giờ chúng ta qua xem Shallow copy object xem thử có bị như vậy không? Shallow copy object javascriptTương tự như ví dụng trên nhưng chúng ta sử dụng Object.assign(), và chúng ta có kết quả gì đây.
Kết quả cũng cho ta thấy tương tự nhau: Qua hai ví dụ cho ta thấy nếu như không nhận ra sớm điều này thì quả thực nghiêm trọng, thay đổi dữ liệu hiện tại làm thay đổi dữ liệu GỐC quả là không tốt cho những người làm việc theo nhóm. Đương nhiên ở đây tôi chí lấy hai phương thức phổ biến nhanh gọn lẹ mà thôi đó là Object.assign() và Array.from(). Bạn có thể tìm hiểu nhiều cách sử dụng hơn khi sử dụng Object.assign() cũng như Array.from(). Deep copy array javascriptTrên mục đầu tiên cho ta thấy việc clone một array như vậy không chính xác, vậy phải làm cách nào. Có một số bài viết sử dụng JSON.stringify() để thực hiệu điều này. Bạn có thể tham khảo, nhưng nó thật sử không đúng. Vì những đối tượng như Deep copy object javascriptĐể giải quyết cho hai vấn đề đó là "Deep copy array javascript" và "Deep copy object javascript" thì chúng ta có thể sử dụng đệ quy để lấy ra và ghép vào từng item. Bây giờ tôi viết một function để deep clone có thể sử dụng cả object và Array luôn.
Giờ chúng ta thử nghiệm lại như hai ví dụ trên. Tôi đã làm và chụp hình lại cho các bạn xem. Kết quả thật là mỹ mãn. Và đây là kết quả của Deep copy array javascriptTóm lạiDeep copy array javascript Tóm lạiThông qua bài viết này, những bạn mới học javascript để chuẩn bị cho quá trình tiến lên 1, hay spread syntax operator và còn nhiều cách khác. Nhưng để thực hiện Deep Clone thì bạn có thể sử dụng cách của tôi như trên.Happy coding!! |