1. 程式人生 > 程式設計 >ES6學習筆記之新增資料型別例項解析

ES6學習筆記之新增資料型別例項解析

本文例項講述了ES6學習筆記之新增資料型別。分享給大家供大家參考,具體如下:

1、資料解構賦值

1、陣列的解構賦值

基本用法:let [key1,key2...]=[value1,value2...]

let [name,age,sex]=['小明',24,'男'];
console.log(name);
console.log(age);
console.log(sex);

注意左右的key與value格式要匹配對應,鍵值可以預設,但逗號的位置要正確

let [arr1,[arr3,[,arr6]]]=[1,2,[31,32,[331,332]]];
console.log(arr1);
console.log(arr3);
console.log(arr6);

2、物件的解構賦值

用法:let {key1,key2...}={key1:value1,key2:value2...}

let obj={name:'小明',age:24,sex:'男',friend:['小張','小李']};
console.log(obj.name);
console.log(obj.age);
console.log(obj.sex);
console.log(obj.friend);

3、字串型別

字串中每個字元與陣列鍵對應

let [a,b,c]="這是一個字串";
console.log(a);
console.log(b);
console.log(c);

2、新增資料型別Set集合

set與陣列不同在於set中不可以有重複資料,常用於去重操作

1、建立set

let myset=new Set(['data1','data2','data3','data3']);

2、屬性size:集合的元素個數

console.log(myset.size);

3、方法

myset.add('data4');//增加元素
myset.delete('data2');//刪除元素
console.log(myset.has('data1'));//判斷是否含有某個元素,包含返回true
myset.clear();//清除集合所有元素
console.log(myset.keys());//返回集合所有的鍵值
console.log(myset.values());//返回集合所有值

3、新增資料型別Map

由於物件的鍵值只能是字串,不可以是物件型別,使用物件作為鍵值會被toString轉化為字串"[object Object]",例如:

let obj1={key:1},obj2={key:2},obj={};
obj.value='objValue';
obj[obj1]='obj1Value';  //將物件obj1作為obj的鍵值
obj[obj2]='obj2Value';
console.log(obj);

輸出:Object { value: "objValue","[object Object]": "obj2Value" },由於轉化為相同的鍵值字串,obj2會覆蓋obj1

而使用map可以避免鍵值必須為字串的限制,其鍵值可以為物件、陣列等

1、建立Map

let mymap=new Map([
    ['stringKey','stringValue'],['age',24],[obj1,'obj1Value'],[obj2,'obj2Value'],[['arr'],'arrValue']
]);

列印mymap如下:

2、屬性size:返回map中鍵值對個數

console.log(mymap.size);

3、方法

mymap.set('key','value');//設定map的鍵、值
mymap.get('key');//通過鍵來取值
mymap.delete('key');//刪除對應的鍵值
mymap.has('key');//判斷是否含有
//mymap.clear();//清除map中所有鍵值
//遍歷
mymap.forEach(function (value,key) {
  console.log(key+":"+value);
})

4、注意{}與{}是不同的兩個鍵值

mymap.set({},"obj1");
mymap.set({},"obj2");

以上語句obj2不會覆蓋obj1,由於空物件{}在記憶體中不同的堆區申請儲存空間,所以作為鍵值它們是不同的

4、Symbol型別

在用相同的字串對物件屬性名或方法進行命名時會發生命名衝突,而使用symbol產生的名字是不同的,例如:

let obj={};
obj[Symbol('name')]="小趙";
obj[Symbol('name')]="小錢";
console.log(obj);

結果如下,不會覆蓋第一句:

感興趣的朋友可以使用線上HTML/CSS/JavaScript程式碼執行工具:http://tools.jb51.net/code/HtmlJsRun測試上述程式碼執行效果。

更多關於JavaScript相關內容可檢視本站專題:《javascript面向物件入門教程》、《JavaScript錯誤與除錯技巧總結》、《JavaScript資料結構與演算法技巧總結》、《JavaScript遍歷演算法與技巧總結》及《JavaScript數學運算用法總結》

希望本文所述對大家JavaScript程式設計有所幫助。