Tôi có thể sử dụng set cho mảng đối tượng trong javascript không?

Để chuyển đổi một tập hợp thành một mảng, chúng ta cần biết các đặc điểm chính của một tập hợp, Một tập hợp là một tập hợp các mục duy nhất i. không có yếu tố nào có thể được lặp lại. Đặt trong ES6 được đặt hàng. các phần tử của tập hợp có thể được lặp lại theo thứ tự chèn

Một tập hợp có thể được chuyển đổi thành một mảng trong JavaScript bằng các cách sau

Mảng JavaScript. phương thức from(). Phương thức này trả về một Mảng mới từ một mảng giống như một đối tượng hoặc các đối tượng có thể lặp lại như Bản đồ, Tập hợp, v.v.  

cú pháp

Array.from(arrayLike object);

Ví dụ. Trong ví dụ này, một tập hợp sẽ được chuyển đổi thành một mảng bằng Array. phương thức from()

HTML




welcome,to,gfg
0
welcome,to,gfg
1
welcome,to,gfg
2

welcome,to,gfg
3____54

welcome,to,gfg
3____11

welcome,to,gfg
3
welcome,to,gfg
3

welcome,to,gfg
4

welcome,to,gfg
3
welcome,to,gfg
6

welcome,to,gfg
7____51____52

đầu ra

welcome,to,gfg

Toán tử lây lan JavaScript. Việc sử dụng toán tử trải rộng cũng có thể giúp chúng ta chuyển Set thành một mảng.  

cú pháp

var variablename = [...value]; 

Ví dụ. Trong ví dụ này, một tập hợp sẽ được chuyển đổi thành một mảng bằng cách sử dụng toán tử trải rộng

HTML




welcome,to,gfg
0
welcome,to,gfg
1
welcome,to,gfg
2

welcome,to,gfg
3____54

var variablename = [...value]; 
5
var variablename = [...value]; 
6

welcome,to,gfg
3____78

welcome,to,gfg
3____110

welcome,to,gfg
7____51____52

đầu ra

welcome,to,gfg
1

Phương thức JavaScript forEach(). Mảng. Phương thức forEach() gọi hàm được cung cấp một lần cho mỗi phần tử của mảng.

Ví dụ. Trong ví dụ này, một tập hợp sẽ được chuyển đổi thành một mảng bằng phương thức forEach()

HTML




welcome,to,gfg
0
welcome,to,gfg
1
welcome,to,gfg
2

welcome,to,gfg
3____118

welcome,to,gfg
3
welcome,to,gfg
50

welcome,to,gfg
4

welcome,to,gfg
3____153

welcome,to,gfg
3____155

welcome,to,gfg
3____157

welcome,to,gfg
3____153

welcome,to,gfg
4

_______53____502

welcome,to,gfg
3____504

var variablename = [...value]; 
5
welcome,to,gfg
06

welcome,to,gfg
3____508

welcome,to,gfg
4

welcome,to,gfg
3____511

welcome,to,gfg
4

welcome,to,gfg
3____514

welcome,to,gfg
7____51____52

đầu ra

welcome,to,gfg
5

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

Internet là một nơi tuyệt vời để tìm kiếm thông tin, nhưng có một vấn đề rất nhỏ. Bạn đang ở trên một con thuyền giữa biển xanh thẳm. Mặc dù hầu hết chúng ta không mạo hiểm đi sâu vào bóng tối, nhưng chính xác thì chúng ta vẫn muốn đạt được điều mình muốn. (Ồ. Internet là đại dương xanh thẳm mà tôi đang nói tới)

Là nhà phát triển giao diện người dùng, hầu hết thời gian chúng tôi không dựa vào vanilla javascript cho mọi thứ mà chúng tôi muốn. Hầu hết các lần chúng tôi cam kết trung thành với các lãnh chúa (khung) và thư viện của mình và theo dõi họ một cách mù quáng vì chúng tôi nghĩ rằng họ có khả năng làm mọi thứ, đôi khi bỏ lỡ các phương pháp hay nhất về javascript

Gần đây, tôi có cơ hội làm việc trên một ứng dụng xương sống, nơi tôi hiểu tầm quan trọng hàng đầu của việc sử dụng có chọn lọc các đối tượng tích hợp sẵn javascript cho các hoạt động của chúng tôi bất kể khuôn khổ nào

Ví dụ, giả sử chúng ta có một mảng gồm n đối tượng [{id. 1, tên. “một”}, {id. 2, tên. " hai"} …. ], khi ai đó yêu cầu bạn tìm một đối tượng dựa trên 'id', lý tưởng nhất là cách tiếp cận đầu tiên của bạn sẽ là sử dụng các phương thức lặp có sẵn của mảng để tìm phần tử phù hợp đầu tiên?

Nhưng giả sử khi cùng một người yêu cầu bạn thực hiện cùng một thao tác n lần cho id ngẫu nhiên trong mảng của bạn, bạn sẽ làm gì?

bằng cách mất thêm một phép lặp O(n) để lặp qua mảng và tạo { id. {}, Tôi. {} }, bạn sẽ có quyền truy cập vào Đối tượng. id để truy cập trực tiếp và hiệu quả đối tượng bạn muốn. Và đối với n thao tác, bạn sẽ tiết kiệm được rất nhiều thời gian, thay vì tìm kiếm toàn bộ mảng

Vì vậy, với phần giới thiệu đó, hãy chuyển sang sử dụng cách chọn các đối tượng tích hợp sẵn của javascript (Mảng, Đối tượng, Tập hợp và Bản đồ) dựa trên các hoạt động mà chúng tôi muốn sử dụng nó cho

1. Tìm kiếm/Tìm kiếm

Hãy xem cách chúng ta có thể tìm thấy một phần tử cụ thể trong cả bốn đối tượng javascript tích hợp cho các trường hợp sử dụng khác nhau

Mảng

welcome,to,gfg
7

Vật

welcome,to,gfg
8

Ghi chú. Khi sử dụng n thao tác để tìm một đối tượng, tốt nhất bạn nên sử dụng khóa đối tượng để truy xuất mục đó thay vì tìm mảng

Bộ

Các bộ không có chức năng tích hợp để truy xuất hoặc tìm chỉ mục của các mục của nó mặc dù nó có thể lặp lại, vì vậy lý tưởng nhất là chúng ta phải chuyển đổi nó thành một mảng trước thao tác indexOf/find

welcome,to,gfg
9

Bản đồ

Bản đồ là các đối tượng đặc biệt, chúng có thể lặp lại với hàm tạo cặp giá trị khóa trông giống như một mảng 2D nhưng hoạt động như một đối tượng. Họ cung cấp sự linh hoạt tốt hơn trong việc lựa chọn các giá trị chính của chúng tôi. Một bản đồ có thể có một giá trị khóa có thể là một chuỗi, số, đối tượng hoặc thậm chí là NaN

welcome,to,gfg
0

Ghi chú. Bản đồ có thể rất linh hoạt ở những nơi mà các đối tượng có thể hơi khó chịu và nó phục vụ mục đích mạnh mẽ trong một số tình huống cụ thể, chẳng hạn như thường xuyên thêm và xóa các cặp khóa

2. Loại

Các hoạt động sắp xếp có thể thú vị và hầu hết các lần chúng tôi cho rằng sắp xếp trên một thực thể có thể lặp lại hoạt động tốt. Chà, không phải lúc nào cũng vậy

Mảng

Các loại mảng thường bị hiểu lầm bởi cả người mới bắt đầu và nhà phát triển trung cấp. Vì cách sắp xếp mặc định của mảng sắp xếp một mảng dựa trên

welcome,to,gfg
91 , nên chúng ta không thể mong đợi có cùng một hành vi sắp xếp cho tất cả các kiểu dữ liệu. Do đó, chúng ta thường cần chuyển một hàm so sánh vào sắp xếp

welcome,to,gfg
2

Ghi chú. Tôi thường thích sử dụng localeCompare để sắp xếp các chuỗi của mình vì chúng mang lại sự linh hoạt hơn trong việc kiểm soát phân biệt chữ hoa chữ thường, trọng âm và cũng mang lại cho chúng tôi lợi ích khi xem xét ngôn ngữ trong quá trình sắp xếp

Vật

Không có phương thức tích hợp sẵn để sắp xếp các đối tượng, nhưng ES6 cung cấp một số sắp xếp khóa tích hợp thú vị trong quá trình tạo đối tượng. Các phím đối tượng chỉ được sắp xếp dựa trên số/chuỗi số, tất cả các phím khác được đẩy ngay sau các phím số chưa được sắp xếp

welcome,to,gfg
3

Bộ

Các bộ không có chức năng sắp xếp tích hợp, tuy nhiên, cách dễ nhất để sắp xếp một bộ là chuyển đổi nó thành một mảng và triển khai phương thức sắp xếp của mảng. Vì, set là một đối tượng có thể lặp lại, chúng ta có thể xây dựng thuật toán sắp xếp của riêng mình theo lựa chọn của chúng ta

welcome,to,gfg
4

Ghi chú. Hãy nhớ rằng phương pháp sắp xếp là của mảng và bạn sẽ phải sử dụng bộ so sánh một cách thích hợp để có được cách sắp xếp mong muốn

Bản đồ

Tương tự như bộ, bản đồ không có phương thức tích hợp sẵn, nhưng chúng ta vẫn có thể trải rộng các mục nhập của chúng trên một mảng và xây dựng bản đồ được sắp xếp mới

welcome,to,gfg
5

Ghi chú. Trong sắp xếp bản đồ, điều quan trọng cần biết là mảng hai chiều từ bản đồ được sắp xếp dựa trên phần tử đầu tiên trong mỗi mảng con. Ở đây, việc sắp xếp dựa trên các chuỗi “a”, “b” và “c”. Nếu đây là những con số, bạn sẽ phải sử dụng một bộ so sánh

3. Bao gồm hoặc Có

Một trong những tính năng quan trọng nhất của các đối tượng có thể lặp lại là kiểm tra sự hiện diện của mục mong muốn. Hầu như, tất cả các đối tượng javascript tiêu chuẩn và có thể lặp lại tích hợp đều có triển khai riêng để đạt được điều này. Hãy nhìn vào chúng dưới đây

Mảng

welcome,to,gfg
6

Vật

welcome,to,gfg
7

Bộ

Set có chức năng 'has' tiện dụng có thể hiệu quả hơn trong việc truy cập các giá trị so với một mảng

welcome,to,gfg
80

Bản đồ

Bản đồ cũng có chức năng 'có' tích hợp

welcome,to,gfg
81

Ghi chú. So với chức năng bao gồm của mảng, hasOwnProperty của Object và Set/Map có các chức năng dường như hoạt động gần với O(1) trong các thử nghiệm khác nhau, rõ ràng hiệu quả hơn đối với các tập dữ liệu lớn hơn

4. Loại bỏ trùng lặp

Không có cách nào đơn giản để loại bỏ các bản sao trong một bộ sưu tập, do mảng hoặc đối tượng đó là tuyến tính, chúng ta có thể sử dụng một số phương thức tích hợp để loại bỏ các bản sao

Mảng

Có nhiều phương pháp trực tuyến để loại bỏ các bản sao khỏi một mảng. Chủ đề stackoverflow này bao gồm. Tuy nhiên, trong ES6, hãy xem các cách dễ nhất để loại bỏ các bản sao khỏi một mảng

welcome,to,gfg
82

Ghi chú. Set sẽ loại bỏ các đối tượng trùng lặp nếu chúng được xâu chuỗi hóa và các chuỗi khớp nhau, nhưng chúng ta vẫn phải phân tích cú pháp rồi quay lại đối tượng sau khi set được chuyển đổi trở lại thành một mảng. Toàn bộ quá trình có thể không hiệu quả

Vật

Các đối tượng không cho phép giá trị khóa trùng lặp, giá trị cũ được ghi đè bởi giá trị mới

welcome,to,gfg
83

Bộ

Các bộ vốn không cho phép các giá trị trùng lặp khi chúng được truyền một đối tượng tuyến tính có thể lặp lại như một mảng, nhưng khi chúng được truyền một mảng đối tượng, chúng lại cho phép các đối tượng trùng lặp

welcome,to,gfg
84

Bản đồ

Bản đồ cũng không cho phép các khóa trùng lặp trong quá trình tạo

welcome,to,gfg
855. Xóa bỏ

Mảng

Mảng không có phương thức tích hợp để xóa các mục của nó. Tuy nhiên chúng ta có thể sử dụng vài phương pháp để làm điều đó. Mối nối, indexOf hoặc bộ lọc

welcome,to,gfg
86

Vật

Các đối tượng không có phương thức xóa tích hợp, nhưng theo tài liệu, chúng tôi có thể sử dụng từ khóa

welcome,to,gfg
92 để xóa khóa. Tuy nhiên, điều này không được khuyến khích rộng rãi trong cộng đồng javascript và thậm chí các thư viện như gạch dưới và lodash sử dụng một phương pháp khác

welcome,to,gfg
87

Bộ

Set cung cấp phương thức xóa tích hợp giúp cuộc sống của chúng ta dễ dàng hơn

welcome,to,gfg
88

Bản đồ

Bản đồ có phương thức xóa tích hợp riêng để xóa các khóa khỏi một đối tượng bản đồ nhất định

welcome,to,gfg
896. Chiều dài và Kích thước
welcome,to,gfg
90Kết luận

Đây là một số gợi ý chính cần nhớ khi chọn các đối tượng tích hợp sẵn tiêu chuẩn mà bạn chọn. Mặc dù javascript cung cấp cho chúng tôi sự linh hoạt khi sử dụng nhiều đối tượng tích hợp sẵn, nhưng tốt hơn hết là chọn đối tượng phù hợp nhất. Hãy để lại ý kiến ​​của bạn dưới đây

✉️ Đăng ký Email Blast hàng tuần một lần của CodeBurst, 🐦 Theo dõi CodeBurst trên Twitter, xem 🗺️ Lộ trình dành cho nhà phát triển web năm 2018 và 🕸️ Tìm hiểu về phát triển web Full Stack

Chúng ta có thể sử dụng set trong mảng không?

set() là một phương thức sẵn có trong Java và được sử dụng để đặt một giá trị đã chỉ định cho một chỉ mục đã chỉ định của một mảng đối tượng đã cho .

Có thể thiết lập các đối tượng cửa hàng?

Đối tượng Set cho phép bạn lưu trữ các giá trị duy nhất thuộc bất kỳ loại nào, cho dù là giá trị nguyên thủy hay tham chiếu đối tượng .

Bộ có thể chứa các đối tượng JS không?

Giống như bất kỳ đối tượng nào khác trong JavaScript, có các quy tắc về cách set chức năng và cách chúng được sử dụng. Bộ là các đối tượng dữ liệu chứa một tập hợp các giá trị duy nhất. Các tập hợp có thể chứa bất kỳ loại dữ liệu nào, nhưng không được chứa các mục trùng lặp .

Là thiết lập một đối tượng hoặc mảng JavaScript?

Loại đối tượng Set đã được giới thiệu trong đặc tả ECMAScript 2015 và đã sẵn sàng để sử dụng trong Node. js và hầu hết các trình duyệt. Bộ rất giống với Mảng, nhưng hơi khác một chút . Bài viết này khám phá những khác biệt này và giải thích khi nào nên sử dụng cái này hơn cái khác.