Thay thế đối tượng cũ bằng JavaScript đối tượng mới
Trong bài đăng này, tôi muốn chia sẻ nghiên cứu của mình về Map, một loại bộ sưu tập JavaScript mới được giới thiệu trong ES6. Gần đây, tôi đang xem xét việc tái cấu trúc mã JavaScript của mình với hy vọng cải thiện mức độ tối ưu hóa cho ứng dụng web của mình. Thay thế các đối tượng cũ bằng Bản đồ có thể là một cách để đạt được mục tiêu Show Thảo luận về Bản đồ mà không so sánh Đối tượng là điều không thể tránh khỏi vì chúng rất giống nhau như anh em một nhà ở chỗ cả hai đều nắm giữ các cặp khóa trong bộ sưu tập của mình. Trong hầu hết các trường hợp, chúng có thể được sử dụng thay thế cho nhau Tuy nhiên, nếu bạn thực sự nghiêm túc về việc tối ưu hóa ứng dụng của mình và duy trì mã ngắn gọn nhất có thể, tốt hơn hết bạn nên cân nhắc việc thay thế một số Đối tượng cũ trên mã của mình bằng Bản đồ. Đặc biệt, nếu ứng dụng của bạn xử lý một tập hợp dữ liệu lớn, thường xuyên thêm và xóa dữ liệu, Bản đồ có thể cải thiện ứng dụng của bạn theo nhiều cách 1. Bản đồ. kích thước so với đối tượng. phím (đối tượng). chiều dàiThuộc tính "kích thước" của bản đồ rất mạnh trong việc đếm độ dài của chính nó. Nó có thể được sử dụng giống như thuộc tính “độ dài” của Array đếm chiều dài của bản đồ theo thuộc tính kích thướcMặt khác, việc đếm kích thước của Đối tượng không đơn giản như Bản đồ. Trước tiên, bạn sẽ nhận được một mảng khóa được chuyển đổi bởi Object. keys(object) rồi đếm độ dài của mảng Đếm chiều dài của đối tượngCái nào nhanh hơn? . Nhưng tôi đã thất bại. Tôi quyết định tạo mã thử nghiệm và tự chạy mã để tìm ra câu trả lời Cú đánh là mã thí nghiệm. Đoạn mã đo lường và so sánh phần triệu giây đã trôi qua trong quá trình đếm kích thước của Bản đồ và Đối tượng thí nghiệm so sánh độ dài đếm thời gian đã trôi quaVà đây là kết quả của thí nghiệm Bảng kết quảNhư thể hiện trên bảng kết quả, Bản đồ. kích thước nhanh hơn nhiều. Đặc biệt, khi kích thước tăng lên, nó hoạt động tốt hơn theo cấp số nhân. Ngạc nhiên thay, kết quả của Map. kích thước không liên quan đến kích thước của nó. Có thể suy ra rằng Bản đồ. kích thước không tự lặp lại trong khi đếm trong khi Object. phím (đối tượng). chiều dài không Bản đồ. has(key) vs Object. phím (đối tượng). bao gồm (chìa khóa)Một phương thức tiện lợi khác của Map là “has(key)”. Phương thức tra cứu nếu Bản đồ có khóa cụ thể và trả về true nếu có hoặc sai nếu không bản đồ có tài sảnMặt khác, Object không có phương thức trực tiếp như vậy. Để thực hiện công việc tương tự trên Object, trước tiên bạn nên lấy mảng khóa và kiểm tra xem mảng khóa có bao gồm các khóa cụ thể không bản đồ. có()Có vẻ như Bản đồ. has() sạch hơn và tôi đoán nó hoạt động tốt hơn vì cùng lý do nó hoạt động tốt hơn khi đếm kích thước của nó. Tôi đã không chạy thử nghiệm mặc dù Bản đồ. xóa(key) và xóa đối tượng[key]Bản đồ có phương thức "xóa (khóa)" để xóa khóa-giá trị cụ thể. Nó trả về true nếu bản đồ đã có khóa và khóa-giá trị đã được xóa thành công. Nó trả về false nếu bản đồ không có khóa nên không có gì bị xóa Mặt khác, bạn có thể xóa bộ khóa-giá trị trong đối tượng bằng toán tử xóa Tuy nhiên, toán tử "xóa" được biết là rất chậm và không an toàn. Đôi khi nó gây ra các lỗi không mong muốn nên cần thận trọng khi sử dụng và thường không được khuyến nghị Bản đồ có thể lặp lạiTính năng quan trọng khác của Map là khả năng lặp lại của nó. Cách đơn giản nhất để lặp Bản đồ là sử dụng “for…of” như sau cho…của bản đồ lặpNgoài for…of, Map còn có nhiều phương thức tự lặp lại như Map. phím () và Bản đồ. giá trị(). Cả hai đều trả về các lần lặp mới chỉ với các giá trị hoặc chỉ với các khóa
Điều này trả về một trình lặp bản đồ. Giá trị không thể truy cập keys[0] như trong mảng. Chỉ có thể truy cập giá trị bằng cách lặp qua trình vòng lặp 2. Bản đồ. giá trị() Điều này giống như Bản đồ. keys() ngoại trừ việc nó trả về một giá trị có thể lặp lại Quan hệ với MảngBản đồ và Mảng có thể chuyển đổi sang/từ nhau rất linh hoạt Có một số cách chuyển đổi Bản đồ thành Mảng. Cách dễ nhất là sử dụng cú pháp lây lan Ánh xạ tới mảngMảng thành bản đồ Hợp nhất nhiều bản đồSử dụng cú pháp trải rộng, nhiều bản đồ có thể được hợp nhất Nếu các Bản đồ khác nhau có cùng một khóa, thì khóa lặp lại cuối cùng duy nhất sẽ tồn tại. Trong mã bên dưới, cả hai bản đồ đều có Kim, nhưng chỉ còn lại Kim(74000) trong employeeSalaryMap2 hợp nhất bản đồHỗ trợ trình duyệt Khi viết bài này, hầu hết các trình duyệt chính, ngoại trừ IE, đều hỗ trợ Bản đồ
Phương pháp 2. Sử dụng các phương thức array map() và filter(). Phương thức map() trong JavaScript tạo một mảng bằng cách gọi một hàm cụ thể trên từng phần tử có trong mảng cha. mảng. filter() hàm được sử dụng để tạo một mảng mới từ một mảng đã cho chỉ bao gồm các phần tử từ mảng đã cho thỏa mãn điều kiện do hàm đối số đặt Tiếp cận
cú pháp ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value ví dụ 2. Dưới đây là một số ví dụ minh họa cho phương thức Splice() HTMLele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value0 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value1 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value2 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value3 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value0 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value5 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value6 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value7 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value0 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value2 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value2____13 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value3 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value5____45 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value2 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value3 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value0 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value00 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value2 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value2____118 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value2____120 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value3 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value5____400 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value2 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value3 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value0 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value08 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value09 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value7 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value11 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value2 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value2____414 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value3 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value5____408 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value2 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value3 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value0 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value00 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value22 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value00 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value2 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value3 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value0 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value00 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value28 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value7 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value30 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value31 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value00 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value2 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value3 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value0 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value36 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value2 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value2____439 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value00 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value66 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value61 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value00 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value66 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value64 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value66 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value66 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value00 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value66 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value69 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value2____469 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value3 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value5____436 ele[ele.map((x, i) => [i, x]).filter(x => x[1] == old_value)[0][0]] = new_value2 _______15____41____42 đầu ra
JavaScript được biết đến nhiều nhất để phát triển trang web nhưng nó cũng được sử dụng trong nhiều môi trường không có trình duyệt. Bạn có thể học JavaScript từ đầu bằng cách làm theo Hướng dẫn JavaScript và Ví dụ về JavaScript này Làm cách nào để thay thế đối tượng cũ bằng đối tượng mới trong JavaScript?Sử dụng phương thức được xác định trước trong JavaScript “splice()” để thay thế các đối tượng trong một mảng . Nó thêm hoặc loại bỏ các phần tử mảng đã chỉ định và sửa đổi mảng ban đầu. Nó được sử dụng trong sự kết hợp của phương thức indexOf() để truy cập chỉ mục của phần tử mảng đã chỉ định và nối nó.
Làm cách nào để tạo đối tượng mới từ đối tượng hiện có trong JavaScript?tạo() Đối tượng. phương thức create() tạo một đối tượng mới, sử dụng một đối tượng hiện có làm nguyên mẫu của đối tượng mới được tạo.
Làm cách nào bạn có thể thay thế một phần tử hiện có trong một đối tượng trong JavaScript?Phương pháp 1. Sử dụng phương thức mối nối()
. |