The new structures are: 1. Symbol, which represents a unique value and is a function structure; 2. Set, which refers to a "set" structure, similar to an array, allowing the storage of unordered and non-repeated data; 3. WeakSet, similar to Set, the internal data cannot have duplicate values; 4. Map, refers to the "dictionary" structure, which can store mapping relationships.
The operating environment of this tutorial: Windows 7 system, ECMAScript version 6, Dell G3 computer.
ES6 new data structure
1, Symbol
Symbol
isES6 One of the new basic data types in
is a function. Each Symbol
value returned from the Symbol
function is unique, and the symbol
value serves as the identifier of the object attribute and has its only purpose.
const s1 = Symbol() const s2 = Symbol() console.log(s1 === s2); // false
symbol as key
The first way is to add it directly to the literal of the object.
// symbol作为key const obj = { [s1]:'abc', [s2]:'cc', }
The second way is to add it by adding an array.
// 需要用数组方式来获取,不能通过点语法,否则会获取到字符串key console.log(obj[s1]);
The third way is to add it through the defineProperty
method in the object.
const s4=Symbol() Object.defineProperty(obj,s4,{ configurable:true, enumerable:true, writable:true, value:'ff' })
Get the corresponding value through symbol
It needs to be obtained in array mode, not through dot syntax, otherwise the string key will be obtained.
console.log(obj[s1]);
symbol
cannot be implicitly converted to type string
.
Note: The parameter in the Symbol function is the symbol descriptor, which is a new feature in ES10
let Sym = Symbol("Sym") alert(Sym) // TypeError: Cannot convert a Symbol value to a string
We cannot alert
one directly symbol
object, but we can get the descriptor of the symbol
object through toString
or .description
.
let sym = Symbol('a') console.log(sym.description); // 'a'
Traversing symbol
cannot obtain symbol when using
for traversal and
object.keys
Healthy, object
also provides the getOwnPropertySymbols
method, which is used to obtain the keys of all symbols in the object.
const sKeys=(Object.getOwnPropertySymbols(obj)); for(const skey of sKeys){ console.log(obj[skey]); }
Global symbol object registration
Sometimes, we may need the values of multiple symbol
to be consistent, we can pass symbol
The static method provided for
method passes in the same descriptor to make their values consistent.
Symbol.for
This method searches the runtime symbol registry for an existing symbol using the given key and returns it if found. Otherwise, a new symbol is created in the global symbol registry using this key.
const sa=Symbol.for('cc') const sb=Symbol.for('cc') console.log(sa===sb); //true
Symbol.keyFor
This method is used to obtain the descriptor of the global symbol
.
const key =Symbol.keyFor(sb) console.log(key); // c
2. Set
Set
object (similar to an array) allows you to store any data type, but the Value cannot be repeated.
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 }
Set common methods
Method | Return value | Description |
---|---|---|
size |
set The number in the object |
Returns the number in the set object Quantity |
add |
Set Object |
Add element |
delete |
boolean |
Delete element |
has |
boolean |
Set Whether this value exists in the object |
clear |
None | Clear the value in the Set object |
##3. WeakSet
WeakSet is another data structure similar to
Set, and the internal data cannot have duplicate values.
- The difference between it and
- Set
- WeakSet
can only store object types, not basic data types
- WeakSet
It is a weak reference to the element
- WeakSet
Basic use
const weakSet = new WeakSet(); let obj = { name: "_island" }; weakSet.add(obj);
WeakSet common methods
Return value | Description | |
---|---|---|
add
|
weaksetObject
| Add element|
delete
|
boolean
| Delete element|
has
|
boolean
|
weaksetWhether this value exists in the object
|
方法 | 返回值 | 说明 |
---|---|---|
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前端】
The above is the detailed content of What are the new es6 data structures?. For more information, please follow other related articles on the PHP Chinese website!

在es6中,可以利用“Array.isArray()”方法判断对象是否为数组,若判断的对象是数组,返回的结果是true,若判断对象不是数组,返回的结果是false,语法为“Array.isArray(需要检测的js对象)”。

es6中遍历跟迭代的区别是:遍历强调的是要把整个数据依次全部取出来,是访问数据结构的所有元素;而迭代虽然也是依次取出数据,但是并不保证取多少,也不保证把所有的数据取完,是遍历的一种形式。

在es6中,可用Object对象的is()方法来判断两个对象是否相等,该方法检测两个变量的值是否为同一个值,判断两个对象的引用地址是否一致,语法“Object.is(对象1,对象2)”;该方法会返回布尔值,若返回true则表示两个对象相等。

转换方法:1、利用“+”给数字拼接一个空字符,语法“数字+""”;2、使用String(),可把对象的值转换为字符串,语法“String(数字对象)”;3、用toString(),可返回数字的字符串表示,语法“数字.toString()”。

在es6中,assign用于对象的合并,可以将源对象的所有可枚举属性复制到目标对象;若目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性,语法为“Object.assign(...)”

改变方法:1、利用splice()方法修改,该方法可以直接修改原数组的内容,语法为“数组.splice(开始位置,修改个数,修改后的值)”;2、利用下标访问数组元素,并重新赋值来修改数组数据,语法为“数组[下标值]=修改后的值;”。

sort排序是es6中的;sort排序是es6中用于对数组的元素进行排序的方法,该方法默认不传参,按照字符编码顺序进行排序,排序顺序可以是字母或数字,并按升序或降序,语法为“array.sort(callback(a,b))”。

在es6中,import as用于将若干export导出的内容组合成一个对象返回;ES6的模块化分为导出与导入两个模块,该方法能够将所有的导出内容包裹到指定对象中,语法为“import * as 对象 from ...”。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function

Dreamweaver Mac version
Visual web development tools

Notepad++7.3.1
Easy-to-use and free code editor

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft
