Apakah struktur data es6 baharu?
Struktur baharu ialah: 1. Simbol, yang mewakili nilai unik dan merupakan struktur fungsi 2. Set, yang merujuk kepada struktur "set", serupa dengan tatasusunan, membenarkan penyimpanan tidak tertib dan data tidak berulang; 3. WeakSet adalah serupa dengan Set, dan data dalaman tidak boleh mempunyai nilai pendua;
Persekitaran pengendalian tutorial ini: sistem Windows 7, ECMAScript versi 6, komputer Dell G3.
Struktur data baharu ES6
1 Simbol
Symbol
ialah yang baharu dalam ES6
Salah satu. jenis data asas, ia adalah fungsi. Setiap nilai Symbol
yang dikembalikan daripada fungsi Symbol
adalah unik Nilai symbol
berfungsi sebagai pengecam atribut objek dan mempunyai satu-satunya tujuan.
const s1 = Symbol() const s2 = Symbol() console.log(s1 === s2); // false
simbol sebagai kunci
Cara pertama ialah menambahkannya terus dalam literal objek.
// symbol作为key const obj = { [s1]:'abc', [s2]:'cc', }
Cara kedua ialah menambahnya dengan menambah tatasusunan.
// 需要用数组方式来获取,不能通过点语法,否则会获取到字符串key console.log(obj[s1]);
Cara ketiga ialah menambahkannya melalui kaedah defineProperty
dalam objek.
const s4=Symbol() Object.defineProperty(obj,s4,{ configurable:true, enumerable:true, writable:true, value:'ff' })
Dapatkan nilai yang sepadan melalui simbol
perlu diperolehi dalam mod tatasusunan, bukan melalui sintaks titik, jika tidak, kunci rentetan akan diperolehi.
console.log(obj[s1]);
symbol
tidak boleh ditukar secara tersirat kepada menaip string
.
Nota: Parameter dalam fungsi Simbol ialah deskriptor simbol, yang merupakan ciri baharu dalam ES10
let Sym = Symbol("Sym") alert(Sym) // TypeError: Cannot convert a Symbol value to a string
Kami tidak boleh terus alert
asymbol
objek, tetapi kita boleh mendapatkan deskriptor objek toString
melalui .description
atau symbol
.
let sym = Symbol('a') console.log(sym.description); // 'a'
simbol traversal
tidak boleh mendapatkan kunci for
apabila menggunakan object.keys
traversal atau symbol
Berkenaan dengan ini, object
masih getOwnPropertySymbols
kaedah disediakan untuk mendapatkan kunci semua simbol dalam objek.
const sKeys=(Object.getOwnPropertySymbols(obj)); for(const skey of sKeys){ console.log(obj[skey]); }
Pendaftaran objek simbol global
Kadangkala, kita mungkin memerlukan nilai berbilang symbol
untuk konsisten, kita boleh lulus statik yang disediakan oleh symbol
Kaedah for
lulus dalam deskriptor yang sama untuk menjadikan nilainya konsisten.
Symbol.for
Kaedah ini mencari pendaftaran simbol masa jalan untuk simbol sedia ada menggunakan kekunci yang diberikan dan mengembalikannya jika ditemui. Jika tidak, simbol baharu dicipta dalam pendaftaran simbol global menggunakan kekunci ini.
const sa=Symbol.for('cc') const sb=Symbol.for('cc') console.log(sa===sb); //true
Symbol.keyFor
Kaedah ini digunakan untuk mendapatkan deskriptor global symbol
.
const key =Symbol.keyFor(sb) console.log(key); // c
2. Set
Set
objek (serupa dengan tatasusunan) membenarkan anda menyimpan sebarang jenis data, tetapi nilainya dalam tidak boleh berulang.
const s1 = new Set() s1.add(10) s1.add(20) s1.add(30) s1.add(40) console.log(s1) // Set(4) { 10, 20, 30, 40 } s1.add(20) console.log(s1) // Set(4) { 10, 20, 30, 40 }
Tetapkan kaedah biasa
Kaedah | Nilai pulangan th> | Penerangan | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
saiz | set Kuantiti dalam objek | Mengembalikan kuantiti dalam objek yang ditetapkan | ||||||||||||||||||
tambah |
| Tambah elemen | ||||||||||||||||||
padam | boolean td> | Padam elemen | ||||||||||||||||||
mempunyai | boolean | Sama ada nilai ini wujud dalam objek | ||||||||||||||||||
clear | None | Clearobjek Nilai dalam |
WeakSet
Set
- > ialah satu lagi struktur data dan data dalaman tidak boleh mempunyai nilai pendua.
Set
- Perbezaan antaranya dan
WeakSet
- hanya boleh menyimpan jenis objek, bukan jenis data asas
WeakSet
Penggunaan asas
const weakSet = new WeakSet(); let obj = { name: "_island" }; weakSet.add(obj);
WeakSet kaedah biasa
方法 | 返回值 | 说明 |
---|---|---|
add | weakset 对象 | 添加元素 |
delete | boolean | 删除元素 |
has | boolean | weakset 对象中是否存在这个值 |
关于遍历
WeakSet
不能被遍历,因为它只是对对象进行弱引用,如果遍历去获取元素,有可能导致对象不能被GC
回收。
所以WeakSet
中的对象是不能获取的
4、Map
ES6
新增的数据结构,用于存储映射关系。我们知道在JavaScript
中对象中是不能用对象来作为key
的。(假如我们把对象作为key
,其内部会将对象转换为字符串[object object]
)
const obj1 = { name: "_island" }; const obj2 = { name: "QC2125" }; const obj3={ [obj1]:'a', [obj2]:'b', } console.log(obj3); // { '[object Object]': 'b' }
而Map
则可以把对象作为key
进行存储,可以通过set
方法添加到Map
中,也直接通过字面量的方式添加。
const obj1 = { name: "_island" }; const obj2 = { name: "QC2125" }; const map = new Map(); map.set(obj1, "a"); map.set(obj2, "b"); console.log(map); // Map(2) { { name: '_island' } => 'a', { name: 'QC2125' } => 'b' } // or const map2 = new Map([[obj1,'a'],[obj2,'b']])
Map常用方法
方法 | 返回值 | 说明 |
---|---|---|
get | 获取对应的元素 | 通过key 获取对应元素 |
size | Map 对象中的数量 | 返回Map 对象中的数量 |
set | Map 对象 | 添加元素 |
delete | boolean | 删除元素 |
has | boolean | Set 对象中是否存在这个值 |
clear | 无 | 清空Set 对象中的值 |
遍历Map
通过foreach
语句遍历Map
map2.forEach((item) => console.log(item));
通过for..of
遍历Map
for ([val, key] of map2) { console.log(`${key}---${val}`); }
5、WeakMap
和Map
类似,也是以键值对的形式存在的
- 和Map的区别
WeakMap
的key
只能使用对象,不接受其他的类型作为key
WeakMap
的key
对对象是弱引用
基本使用
const weakMap = new WeakMap(); weakMap.set(obj, "a"); console.log(weakMap.get(obj)); // a
WeakMap常用方法
方法 | 返回值 | 说明 |
---|---|---|
get |
weakmap 对象 |
获取元素 |
delete |
boolean |
删除元素 |
has |
boolean |
weaksmap 对象中是否存在这个值 |
关于遍历
和WeakSet
一样,正因为它是弱引用,WeakMap
的key
是不可枚举的,如果key
可枚举那其列表将会受GC
影响。
【相关推荐:javascript视频教程、web前端】
Atas ialah kandungan terperinci Apakah struktur data es6 baharu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Apabila menggunakan struktur data kompleks dalam Java, Comparator digunakan untuk menyediakan mekanisme perbandingan yang fleksibel. Langkah-langkah khusus termasuk: mentakrifkan kelas pembanding, menulis semula kaedah bandingkan untuk menentukan logik perbandingan. Buat contoh pembanding. Gunakan kaedah Collections.sort, menghantar contoh koleksi dan pembanding.

Struktur data dan algoritma ialah asas pembangunan Java Artikel ini meneroka secara mendalam struktur data utama (seperti tatasusunan, senarai terpaut, pepohon, dll.) dan algoritma (seperti pengisihan, carian, algoritma graf, dll.) dalam Java. Struktur ini diilustrasikan dengan contoh praktikal, termasuk menggunakan tatasusunan untuk menyimpan skor, senarai terpaut untuk mengurus senarai beli-belah, tindanan untuk melaksanakan rekursi, baris gilir untuk menyegerakkan benang, dan pepohon dan jadual cincang untuk carian dan pengesahan pantas. Memahami konsep ini membolehkan anda menulis kod Java yang cekap dan boleh diselenggara.

Jenis rujukan ialah jenis data khas dalam bahasa Go Nilai mereka tidak menyimpan data itu sendiri secara langsung, tetapi alamat data yang disimpan. Dalam bahasa Go, jenis rujukan termasuk kepingan, peta, saluran dan penunjuk. Pemahaman mendalam tentang jenis rujukan adalah penting untuk memahami pengurusan memori dan kaedah pemindahan data bahasa Go. Artikel ini akan menggabungkan contoh kod khusus untuk memperkenalkan ciri dan penggunaan jenis rujukan dalam bahasa Go. 1. Slices Slices ialah salah satu jenis rujukan yang paling biasa digunakan dalam bahasa Go.

Pokok AVL ialah pokok carian binari seimbang yang memastikan operasi data yang pantas dan cekap. Untuk mencapai keseimbangan, ia melakukan operasi belok kiri dan kanan, melaraskan subpokok yang melanggar keseimbangan. Pokok AVL menggunakan pengimbangan ketinggian untuk memastikan ketinggian pokok sentiasa kecil berbanding bilangan nod, dengan itu mencapai kerumitan masa logaritma (O(logn)) operasi carian dan mengekalkan kecekapan struktur data walaupun pada set data yang besar.

Gambaran Keseluruhan Rangka Kerja Koleksi Java Rangka kerja pengumpulan Java ialah bahagian penting dalam bahasa pengaturcaraan Java Ia menyediakan satu siri perpustakaan kelas kontena yang boleh menyimpan dan mengurus data. Pustaka kelas kontena ini mempunyai struktur data yang berbeza untuk memenuhi keperluan penyimpanan dan pemprosesan data dalam senario yang berbeza. Kelebihan rangka kerja koleksi ialah ia menyediakan antara muka bersatu, membolehkan pembangun mengendalikan perpustakaan kelas kontena yang berbeza dengan cara yang sama, dengan itu mengurangkan kesukaran pembangunan. Struktur data rangka kerja pengumpulan Java Rangka kerja pengumpulan Java mengandungi pelbagai struktur data, setiap satunya mempunyai ciri unik dan senario yang boleh digunakan. Berikut adalah beberapa struktur data rangka kerja pengumpulan Java yang biasa: 1. Senarai: Senarai ialah koleksi tersusun yang membolehkan elemen diulang. Li

Jadual cincang boleh digunakan untuk mengoptimumkan persilangan tatasusunan PHP dan pengiraan kesatuan, mengurangkan kerumitan masa daripada O(n*m) kepada O(n+m) Langkah-langkah khusus adalah seperti berikut: Gunakan jadual cincang untuk memetakan elemen tatasusunan pertama kepada nilai Boolean untuk mencari dengan cepat sama ada unsur dalam tatasusunan kedua wujud dan meningkatkan kecekapan pengiraan persilangan. Gunakan jadual cincang untuk menandakan elemen tatasusunan pertama sebagai sedia ada, dan kemudian tambahkan elemen tatasusunan kedua satu demi satu, mengabaikan elemen sedia ada untuk meningkatkan kecekapan pengiraan kesatuan.

Gambaran Keseluruhan Perpustakaan Struktur Data PHPSPL Pustaka struktur data PHPSPL (Perpustakaan Standard PHP) mengandungi satu set kelas dan antara muka untuk menyimpan dan memanipulasi pelbagai struktur data. Struktur data ini termasuk tatasusunan, senarai terpaut, tindanan, baris gilir dan set, setiap satunya menyediakan set kaedah dan sifat khusus untuk memanipulasi data. Tatasusunan Dalam PHP, tatasusunan ialah koleksi tertib yang menyimpan jujukan elemen. Kelas tatasusunan SPL menyediakan fungsi yang dipertingkatkan untuk tatasusunan PHP asli, termasuk pengisihan, penapisan dan pemetaan. Berikut ialah contoh menggunakan kelas tatasusunan SPL: useSplArrayObject;$array=newArrayObject(["foo","bar","baz"]);$array

Kajian mendalam tentang misteri struktur data bahasa Go memerlukan contoh kod khusus Sebagai bahasa pengaturcaraan yang ringkas dan cekap, bahasa Go juga menunjukkan daya tarikannya yang unik dalam memproses struktur data. Struktur data adalah konsep asas dalam sains komputer, yang bertujuan untuk mengatur dan mengurus data supaya ia boleh diakses dan dimanipulasi dengan lebih cekap. Dengan mempelajari secara mendalam tentang misteri struktur data bahasa Go, kami dapat memahami dengan lebih baik cara data disimpan dan dikendalikan, seterusnya meningkatkan kecekapan pengaturcaraan dan kualiti kod. 1. Array Array ialah salah satu struktur data yang paling mudah
