Hashing

Set/Map

MethodSetMapBig O

Init

new Set(['1','2']);

new Map([ [0,1],[0,2] ]);

ๅขžๅŠ 

mySet.add('1')

myMap.set(0, 1)

O(1)

ๅˆช้™ค

mySet.delete('1')

myMap.delete(0)

O(1)

ๆธ…ๆŽ‰

mySet.clear()

myMap.clear()

ๅ–ๅ€ผ

-

mySet.get(0) // 1

O(1)

ๆ˜ฏๅฆๅญ˜ๅœจ

mySet.has('1')

myMap.has(0)

O(1)

้•ทๅบฆ

mySet.size

myMap.size

่ฝ‰้™ฃๅˆ—

[...mySet]

[...myMap.values()]

Set

// ES6 Set
let instruments = new Set();
// or ไธ€้–‹ๅง‹ๅฐฑๆŠŠๅ€ผๅญ˜้€ฒๅŽป
let instruments = new Set(['1','2']);


instruments.add('piano');
instruments.has('guitar'); // false
instruments.delete('guitar'); // ่ฃก้ขๆ นๆœฌๆฒ’ๆœ‰ guitar ๆ‰€ไปฅๅ›žๅ‚ณ false
instruments.size; // 1
[...instruments] //['piano']

// or use Array.from, 
Array.from(instruments); 

Map

let myMap= new Map();

// or ไธ€้–‹ๅง‹ๅฐฑๅญ˜ๅ€ผ๏ผŒ่จ˜ๅพ—ๆ˜ฏ [[]] double array
let myMap = new Map([[keyString ,'value']]);

var keyString = 'I am string',
    keyObj = {},
    keyFunc = function() {},
    keyNumber = 1

// ๅขžๅŠ 
myMap.set(keyString , 'string value');
myMap.set(keyObj, {obj: 1});
myMap.set(keyFunc , function(){console.log('I am function')});
myMap.set(keyNumber , 100);

// ๆœ‰ๅนพๅ€‹
myMap.size; // 4

// ๅ–ๅ€ผ
myMap.get(keyObj); // {obj: 1}

// ็œ‹ๆ˜ฏๅฆๅญ˜ๅœจ
myMap.has(keyString ); //  true

// ๅˆชๆŽ‰
myMap.delete(keyNumber); 
myMap.size; // 3

// ่ฝ‰้™ฃๅˆ—
[...myMap.values()] // ["string value", {obj: 1}, ฦ’]

ๅ…ถไป–

if( lookup.has(str) ){
    lookup.set(str, lookup.get(str) + 1 )
} else {
    lookup.set(str, 1 )
}

ๅฏไปฅๆ”นๅฏซๆ›ด็ฐก็Ÿญ

lookup.set(str, (lookup.get(str) ?? 0) + 1 )

ไปฅไธ‹ๅŒ็†

if( !lookup.has(sortStr) ){
    lookup.set(sortStr, [str] )
} else {
     lookup.set(sortStr, [...lookup.get(sortStr), str] )
}

// ๅฏไปฅ่ฎŠไปฅไธ‹
lookup.set(sortStr, [...(lookup.get(sortStr) ?? []), str] )

Last updated