Set 和 Map 數(shù)據(jù)結(jié)構(gòu)

var set = new Set([1, 2, 3, 4, 4]);

[...set]? ? ?// [1, 2, 3, 4]

var s = new Set();

[2, 3, 5, 4, 5, 2, 2].map(x => s.add(x));

for (let i of s) { console.log(i);}? ? ? ? ? ? // 2 3 5 4

Set 數(shù)據(jù)結(jié)構(gòu):::::它類似于數(shù)組,但是成員的值都是唯一的,沒有重復(fù)的值。

四個(gè)操作方法:

set.add(value):添加某個(gè)值,返回Set結(jié)構(gòu)本身。

set.delete(value):刪除某個(gè)值,返回一個(gè)布爾值,表示刪除是否成功。

set.has(value):返回一個(gè)布爾值,表示該值是否為Set的成員。

set.clear():清除所有成員,沒有返回值

Map結(jié)構(gòu):::::提供了“值—值”的對應(yīng),是一種更完善的Hash結(jié)構(gòu)實(shí)現(xiàn)。如果你需要“鍵值對”的數(shù)據(jù)結(jié)構(gòu),Map比Object更合適。它類似于對象,也是鍵值對的集合,但是“鍵”的范圍不限于字符串,各種類型的值(包括對象)都可以當(dāng)作鍵。

var m = new Map();

var o = {p: "Hello World"};

m.set(o, "content")

m.get(o) // "content"

m.has(o) // true

m.delete(o) // true

m.has(o) // false


實(shí)例屬性和方法:size、set、get、has、delete、clear

遍歷方法:keys()、values()、entries()、forEach()


Object.assign(target, ...sources)?? target目標(biāo)對象。sources源對象

如果目標(biāo)對象中的屬性具有相同的鍵,則屬性將被源中的屬性覆蓋。后來的源的屬性將類似地覆蓋早先的屬性。

const object1 = {

? a: 1,b: 2,c: 3

};

const ob = Object.assign({c: 4, d: 5}, object1);

console.log(ob)

Object { c: 3, d: 5, a: 1, b: 2 }

復(fù)制一個(gè)對象

var obj = { a: 1 };

var copy = Object.assign({}, obj);

console.log(copy); // { a: 1 }

針對深拷貝,需要使用其他方法,因?yàn)?Object.assign()拷貝的是屬性值。假如源對象的屬性值是一個(gè)指向?qū)ο蟮囊?,它也只拷貝那個(gè)引用值。

function test() {

? 'use strict';

? let obj1 = { a: 0 , b: { c: 0}};

? let obj2 = Object.assign({}, obj1);

? console.log(JSON.stringify(obj2)); // { a: 0, b: { c: 0}}

? obj1.a = 1;

? console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 0}}

? console.log(JSON.stringify(obj2)); // { a: 0, b: { c: 0}}

? obj2.a = 2;

? console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 0}}

? console.log(JSON.stringify(obj2)); // { a: 2, b: { c: 0}}

? obj2.b.c = 3;

? console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 3}}

? console.log(JSON.stringify(obj2)); // { a: 2, b: { c: 3}}

? // Deep Clone

? obj1 = { a: 0 , b: { c: 0}};

? let obj3 = JSON.parse(JSON.stringify(obj1));

? obj1.a = 4;

? obj1.b.c = 4;

? console.log(JSON.stringify(obj3)); // { a: 0, b: { c: 0}}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容