Baseline Widely available *
Map
ê°ì²´ë í¤-ê° ìê³¼ í¤ì ìë ì½ì
ìì를 기ìµí©ëë¤. 모ë ê°(ê°ì²´ ë° ìì ê° ëª¨ë)ì í¤ ëë ê°ì¼ë¡ ì¬ì©ë ì ììµëë¤.
const map1 = new Map();
map1.set("a", 1);
map1.set("b", 2);
map1.set("c", 3);
console.log(map1.get("a"));
// Expected output: 1
map1.set("a", 97);
console.log(map1.get("a"));
// Expected output: 97
console.log(map1.size);
// Expected output: 3
map1.delete("b");
console.log(map1.size);
// Expected output: 2
ì¤ëª
Map
ê°ì²´ë í¤-ê° ìì¸ ì§í©ì
ëë¤. í Map
ììì í¤ë ì¤ì§ ë¨ íëë§ ì¡´ì¬ í©ëë¤. ì´ë Map
ì§í©ì ì ì¼ì±ì
ëë¤. Map
ê°ì²´ë í¤-ê° ìì¼ë¡ ë°ë³µë©ëë¤. for...of
루íë ê° ë°ë³µì ëí´ [key, value]
ë¡ ì´ë£¨ì´ì§ 멤ë²ê° 2ê°ì¸ ë°°ì´ì ë°íí©ëë¤. ë°ë³µì ì½ì
í ììëë¡ ë°ìí©ëë¤. ì¦, set()
ë©ìëë¡ ë§µì ì²ì ì½ì
í ê°ê°ì í¤-ê° ì ììì ëìë©ëë¤. (set()
ì´ í¸ì¶ëììë ë§µìì í´ë¹ í¤ê° ììì ê²½ì°ì
ëë¤)
Map
ì ëª
ì¸ë "íê· ì ì¼ë¡ ì§í© ë´ ììì ìì ë°ë¼ íì ì íì¸ ì ê·¼ ìê°ì ì ê³µíë" ë§µì 구íí´ì¼ íë¤ê³ 기ì ëì´ ììµëë¤. ë°ë¼ì ë³µì¡ì±ì´ O(N)ë³´ë¤ ë ëì ê²½ì° ë´ë¶ì ì¼ë¡ í´ì í
ì´ë¸(O(1) 룩ì
), ê²ì í¸ë¦¬(O(log(N)) 룩ì
) ëë 기í ë°ì´í° êµ¬ì¡°ë¡ ííë ì ììµëë¤.
ê° ëì¼ì±ì SameValueZero
ì 기ë°ì¼ë¡ í©ëë¤.(0
ê³¼ -0
ì ë¤ë¥´ê² ì·¨ê¸íë ë±ê° ê°ìì ì¬ì©íììµëë¤. ë¸ë¼ì°ì í¸íì±ì íì¸í´ë³´ì¸ì). ì¦, NaN !== NaN
ìë ë¶êµ¬íê³ NaN
ì NaN
ê³¼ ëì¼íê² ê°ì£¼ëë©°, ë¤ë¥¸ 모ë ê°ì ===
ì°ì°ìì ìë¯¸ë¡ ì ë°ë¼ ëì¼íê² ê°ì£¼ë©ëë¤.
Object
ë Map
ê³¼ ì ì¬í©ëë¤. ë ë¤ ê°ì ê°ë¦¬í¤ë í¤ë¥¼ ì¤ì íê³ , í´ë¹ ê°ì ë°ìì¤ë©°, í¤ë¥¼ ìì íë©°, í¤ì 무ì¸ê°ê° ì ì¥ëìëì§ ì¬ë¶ë¥¼ ì ì ììµëë¤. ì´ë¬í ì´ì ë¡ (ê·¸ë¦¬ê³ ëìì¼ë¡ ì¬ì©í ì ìë ë´ì¥ ê°ì²´ê° ìì기 ë문ì) Object
ë ìì¬ì ì¼ë¡ Map
ì¼ë¡ ì¬ì©ëì´ ììµëë¤.
ê·¸ë¬ë ê²½ì°ì ë°ë¼ìë ìëì ê°ì´ Map
ì´ ì í¸ëë ì¤ìí ì°¨ì´ì ì´ ììµëë¤.
Map
ë 기본ì ì¼ë¡ í¤ë¥¼ í¬í¨íì§ ììµëë¤. ì¬ê¸°ìë ëª
ìì ì¼ë¡ ì
ë ¥ë ë´ì©ë§ í¬í¨ë©ëë¤.
Object
ë íë¡í íì
ì´ ìì¼ë¯ë¡ 주ìíì§ ìì¼ë©´ ìì ì í¤ì ì¶©ëí ì ìë 기본 í¤ê° í¬í¨ëì´ ììµëë¤.
ì°¸ê³ : ì´ë Object.create(null)
를 ì¬ì©íì¬ ë¬´ìí ì ìì§ë§ ê±°ì ìíëì§ ììµëë¤.
Map
ì ì¬ì©ìê° ì ê³µíë í¤ì ê°ì ëí´ì ìì íê² ì¬ì©í ì ììµëë¤.
ì¬ì©ìê° ì ê³µí í¤-ê° ìì Object
ì ì¤ì íë©´ 공격ìê° ê°ì²´ì íë¡í íì
ì ì¬ì ìíì¬ ê°ì²´ 주ì
공격ì ë°ììí¬ ì ììµëë¤. ëë°ì ì¸ í¤ ë¬¸ì ì ë§ì°¬ê°ì§ë¡ null
íë¡í íì
ê°ì²´ë¥¼ ì¬ì©íì¬ ì´ ë¬¸ì 를 í´ê²°í ìë ììµëë¤.
Map
ì í¤ë 모ë ê°(í¨ì, ê°ì²´ ëë ììê° í¬í¨)ì´ ë ì ììµëë¤. Object
ì í¤ë String
ëë Symbol
ì´ì¬ì¼ í©ëë¤. í¤ ìì
Map
ìì í¤ë ë¨ìíê³ ì§ê´ì ì¸ ë°©ìì¼ë¡ ì ë ¬ë©ëë¤. Map
ê°ì²´ë í목ì ì½ì
í ììëë¡ í목, í¤ ë° ê°ì ë°ë³µí©ëë¤.
ì¼ë°ì ì¸ Object
ì í¤ë ì ë ¬ëì´ ìì§ë§ íì ê·¸ë°ê²ì ìëë©° ììê° ë³µì¡í©ëë¤. ê²°ê³¼ì ì¼ë¡ ìì± ììì ìì¡´íì§ ìë ê²ì´ ê°ì¥ ì¢ìµëë¤.
ììë ECMAScript 2015ììë§ ìì²´ ìì±ì ëí´ ì²ì ì ìëììµëë¤. ECMAScript 2020ì ììë ìì±ì ììë ì ìí©ëë¤. OrdinaryOwnPropertyKeys ì EnumerateObjectProperties ì¶ì ëª
ì¸ìì
ì ì°¸ê³ íì기 ë°ëëë¤. ê·¸ë¬ë ê°ì²´ì 모ë ìì±ì ë°ë³µíë ë¨ì¼ ë©ì»¤ëì¦ì ììµëë¤. ë¤ìí ë©ì»¤ëì¦ìë ê°ê° ë¤ë¥¸ ìì± íì ì§í©ì´ í¬í¨ë©ëë¤ (for-in
ì ì¤ì§ ì´ê±° ê°ë¥í 문ìì´ í¤ ìì±ë§ í¬í¨í©ëë¤. Object.keys
ì ì´ê±° ê°ë¥í ìì²´ 문ìì´ í¤ ìì±ë§ í¬í¨í©ëë¤. Object.getOwnPropertyNames
ì ì´ê±° ë¶ê°ë¥íëë¼ë ìì²´ 문ìì´ í¤ ìì±ì í¬í¨í©ëë¤. Object.getOwnPropertySymbols
ì Symbol
-í¤ ìì±ì ëí´ ëì¼í©ëë¤.)
í¬ê¸°
Map
ì ìì´í
ì ìë size
ìì±ìì ì½ê² ê°ì ¸ì¬ ì ììµëë¤. Object
ì ìì´í
ìë ìëì¼ë¡ ê²°ì í´ì¼ í©ëë¤. ìí Map
ì ìíê°ë¥(iterable)í기 ë문ì ì´ë¯ë¡ ì§ì ë°ë³µí ì ììµëë¤.
Object
ë iteration protocolì 구ííì§ ì기 ë문ì ë¡ ê°ì²´ë for...of문ì ì¬ì©íì¬ ì§ì ì ì¼ë¡ ë°ë³µí ì ììµëë¤.
ì°¸ê³ :
Object.keys
í¹ì Object.entries
를 ì¬ì©íì¬ ê°ì²´ì ë°ë³µ ê°ë¥ í목ì ì»ì ì ììµëë¤.í¤-ê° ìì ë¹ë²í ì¶ê° ë° ì ê±°ì ê´ë ¨ë ìí©ììë ì±ë¥ì´ ì¢ ë ì¢ìµëë¤.
í¤-ê° ìì ë¹ë²í ì¶ê° ë° ì ê±°ì ìµì íëì§ ìììµëë¤.
Serialization and parsingì§ë ¬í ëë 구문 ë¶ìì ëí 기본 ì§ìì´ ììµëë¤.
(íì§ë§ JSON.stringify()
ì ì¸ìë¡ replacer를 ì¬ì©íë¤ë©´ Map
ì ëí ìì ë§ì ì§ë ¬í ë° êµ¬ë¬¸ ë¶ìì ì§ìíê² ë§ë¤ ì ììµëë¤. Stack Overflow ì§ë¬¸ì¸ How do you JSON.stringify an ES6 Map?)ì ì°¸ê³ íì¸ì.)
JSON.stringify()
를 ì¬ì©íì¬ Object
ì JSONì¼ë¡ ì§ë ¬í를 기본 ì§ìí©ëë¤.
JSON.parse()
를 ì¬ì©íì¬ JSONìì Object
ì¼ë¡ì 구문 ë¶ìì 기본 ì§ìí©ëë¤.
ê°ì²´ ìì± ì¤ì ì Map ê°ì²´ììë ìëíì§ë§ ìë¹í í¼ëì ì¼ê¸°í ì ììµëë¤.
ë°ë¼ì ì´ë ë¤ìê³¼ ê°ì ë°©ìì¼ë¡ ëìíë ê²ì²ë¼ ë³´ì ëë¤.
const wrongMap = new Map();
wrongMap["bla"] = "blaa";
wrongMap["bla2"] = "blaaa2";
console.log(wrongMap); // Map { bla: 'blaa', bla2: 'blaaa2' }
ê·¸ë¬ë ìì±ì ì¤ì íë ë°©ë²ì Map ë°ì´í° 구조ì ìí¸ ìì©íì§ ììµëë¤. ìì± ì¤ì ì ì¼ë° ê°ì²´ì 기ë¥ì ì¬ì©í©ëë¤. 'bla' ê°ì ì§ì를 ìí Mapì ì ì¥ëì§ ììµëë¤. ë°ì´í°ì ëí ë¤ë¥¸ ìì ë ìëì ê°ì´ ì¤í¨í©ëë¤.
wrongMap.has("bla"); // false
wrongMap.delete("bla"); // false
console.log(wrongMap); // Map { bla: 'blaa', bla2: 'blaaa2' }
ë§µì ë°ì´í°ë¥¼ ì ì¥íë ì¬ë°ë¥¸ ë°©ë²ì set(key, value)
ë©ìë를 ì¬ì©íë ê²ì
ëë¤.
const contacts = new Map();
contacts.set("Jessie", { phone: "213-555-1234", address: "123 N 1st Ave" });
contacts.has("Jessie"); // true
contacts.get("Hilary"); // undefined
contacts.set("Hilary", { phone: "617-555-4321", address: "321 S 2nd St" });
contacts.get("Jessie"); // {phone: "213-555-1234", address: "123 N 1st Ave"}
contacts.delete("Raymond"); // false
contacts.delete("Jessie"); // true
console.log(contacts.size); // 1
ìì±ì
Map()
ìë¡ì´ Map
ê°ì²´ë¥¼ ìì±í©ëë¤.
get Map[@@species]
íì ê°ì²´ë¥¼ ë§ëë ë° ì¬ì©ëë ìì±ì í¨ìì ëë¤.
Map.prototype[@@toStringTag]
@@toStringTag
ìì±ì ì´ê¸° ê°ì 문ìì´ "Map"
ì
ëë¤. ì´ ìì±ì Object.prototype.toString()
ìì ì¬ì©í©ëë¤.
Map.prototype.size
Map
ê°ì²´ì í¤/ê° ìì ì«ì를 ë°íí©ëë¤.
Map.prototype.clear()
Map
ê°ì²´ìì 모ë í¤-ê° ìì ì ê±°í©ëë¤.
Map.prototype.delete()
Map
ê°ì²´ì í´ë¹ ììê° ì¡´ì¬íë©° ìì ëìì ê²½ì° true
를 ë°ííë©° í´ë¹ ììê° ì¡´ì¬íì§ ìë ê²½ì° false
를 ë°íí©ëë¤. ì´ ì´íì map.has(key)
를 ì¤ííë©´ false
를 ë°íí ê²ì
ëë¤.
Map.prototype.get()
주ì´ì§ í¤ì í´ë¹íë ê°ì ë°ííê±°ë ê°ì´ ìë¤ë©´ undefined
ì ë°íí©ëë¤.
Map.prototype.has()
주ì´ì§ í¤ì ì°ê´ë ê°ì´ Map
ê°ì²´ì ì¡´ì¬íëì§ ì¬ë¶ë¥¼ ë¶ë¦¬ì¸ ê°ì¼ë¡ ë°íí©ëë¤.
Map.prototype.set()
Map
ê°ì²´ìì ì ë¬ë í¤ì ê°ì ì¤ì í©ëë¤. Map
ê°ì²´ë¥¼ ë°íí©ëë¤.
Map.prototype[@@iterator]()
Map
ê°ì²´ì ì½ì
ë ììì ë°ë¼ [key, value]
ë ê°ì ë©¤ë² ë°°ì´ì í¬í¨íë ìë¡ì´ ë°ë³µì를 ë°íí©ëë¤.
Map.prototype.keys()
Map
ê°ì²´ì ì½ì
ë ììì ë°ë¼ ê° ììì í¤ë¥¼ í¬í¨íë ìë¡ì´ ë°ë³µì를 ë°íí©ëë¤.
Map.prototype.values()
Map
ê°ì²´ì ì½ì
ë ììì ë°ë¼ ê° ììì ê°ì í¬í¨íë ìë¡ì´ ë°ë³µì를 ë°íí©ëë¤.
Map.prototype.entries()
Map
ê°ì²´ì ì½ì
ë ììì ë°ë¼ [key, value]
ë ê°ì ë©¤ë² ë°°ì´ì í¬í¨íë ìë¡ì´ ë°ë³µì를 ë°íí©ëë¤.
Map.prototype.forEach()
Map
ê°ì²´ì ì¡´ì¬íë ê° í¤-ê° ìì ëí´ ì½ì
ììëë¡ callbackFn
ì í ë²ì© í¸ì¶ í©ëë¤. ë§ì½ forEach
í¸ì¶ ì thisArg
매ê°ë³ìê° ìë¤ë©´ ê° ì½ë°±ì this
ê°ì¼ë¡ ì¬ì©ë©ëë¤.
const myMap = new Map();
const keyString = "a string";
const keyObj = {};
const keyFunc = function () {};
// ê° ì¤ì
myMap.set(keyString, "value associated with 'a string'");
myMap.set(keyObj, "value associated with keyObj");
myMap.set(keyFunc, "value associated with keyFunc");
console.log(myMap.size); // 3
// ê° ë¶ë¬ì¤ê¸°
console.log(myMap.get(keyString)); // "value associated with 'a string'"
console.log(myMap.get(keyObj)); // "value associated with keyObj"
console.log(myMap.get(keyFunc)); // "value associated with keyFunc"
console.log(myMap.get("a string")); // "value associated with 'a string'", ìëíë©´ keyString === 'a string'
console.log(myMap.get({})); // undefined, ìëíë©´ keyObj !== {}
console.log(myMap.get(function () {})); // undefined, ìëíë©´ keyFunc !== function () {}
Map í¤ë¡ NaN ì¬ì©í기
NaN
ë í¤ë¡ ì¬ì©í ì ììµëë¤. 모ë NaN
ì´ ìì ê³¼ ê°ì§ë ìì§ë§(NaN !== NaN
ì ì°¸ì
ëë¤), NaN
ì ìë¡ êµ¬ë³í ì ì기 ë문ì ë¤ìê³¼ ê°ì ììê° ëìí©ëë¤.
const myMap = new Map();
myMap.set(NaN, "not a number");
myMap.get(NaN);
// "not a number"
const otherNaN = Number("foo");
myMap.get(otherNaN);
// "not a number"
for...ofë¡ ë§µ ìíí기
ë§µì for...of
ë°ë³µì ì¬ì©íì¬ ìíí ì ììµëë¤.
const myMap = new Map();
myMap.set(0, "zero");
myMap.set(1, "one");
for (const [key, value] of myMap) {
console.log(`${key} = ${value}`);
}
// 0 = zero
// 1 = one
for (const key of myMap.keys()) {
console.log(key);
}
// 0
// 1
for (const value of myMap.values()) {
console.log(value);
}
// zero
// one
for (const [key, value] of myMap.entries()) {
console.log(`${key} = ${value}`);
}
// 0 = zero
// 1 = one
forEach()ë¡ ë§µ ìíí기
ë§µì forEach()
ë©ìë를 ì¬ì©íì¬ ìíí ì ììµëë¤.
myMap.forEach((value, key) => {
console.log(`${key} = ${value}`);
});
// 0 = zero
// 1 = one
ë°°ì´ ê°ì²´ìì ê´ê³
const kvArray = [
["key1", "value1"],
["key2", "value2"],
];
// Use the regular Map constructor to transform a 2D key-value Array into a map
const myMap = new Map(kvArray);
console.log(myMap.get("key1")); // "value1"
// Use Array.from() to transform a map into a 2D key-value Array
console.log(Array.from(myMap)); // Will show you exactly the same Array as kvArray
// A succinct way to do the same, using the spread syntax
console.log([...myMap]);
// Or use the keys() or values() iterators, and convert them to an array
console.log(Array.from(myMap.keys())); // ["key1", "key2"]
ë§µ ë³µì í기ì ë³í©í기
Array
ì ê°ì´ Map
ì ë³µì ê° ê°ë¥í©ëë¤.
const original = new Map([[1, "one"]]);
const clone = new Map(original);
console.log(clone.get(1)); // one
console.log(original === clone); // false (useful for shallow comparison)
ì°¸ê³ : ë°ì´í° ìì²´ë ë³µì ê° ìëë¤ë ì¬ì¤ì ëª ì¬íì ì¼ í©ëë¤.
ë§µì í¤ ì ì¼ì±ì ì ì§íì±ë¡ ë³í©ì´ ê°ë¥í©ëë¤.
const first = new Map([
[1, "one"],
[2, "two"],
[3, "three"],
]);
const second = new Map([
[1, "uno"],
[2, "dos"],
]);
// ë ë§µì ë³í©í©ëë¤. í¤ ê°ì´ ì¤ë³µë ê²½ì° ë§ì§ë§ í¤ì ê°ì ë°ë¦
ëë¤.
// ì ê° ë¬¸ë²ì ë§µì ë°°ì´ë¡ ë³íí©ëë¤.
const merged = new Map([...first, ...second]);
console.log(merged.get(1)); // uno
console.log(merged.get(2)); // dos
console.log(merged.get(3)); // three
ë§µì ë°°ì´ê³¼ ë³í©ë ì ììµëë¤.
const first = new Map([
[1, "one"],
[2, "two"],
[3, "three"],
]);
const second = new Map([
[1, "uno"],
[2, "dos"],
]);
// ë§µì ë°°ì´ë¡ ë³í©í기. ì¤ë³µë í¤ê° ìë¤ë©´ ë§ì§ë§ì ë³í©ë ë§µì í¤ì í´ë¹íë ê°ì´ ì¤ì ë©ëë¤.
const merged = new Map([...first, ...second, [1, "eins"]]);
console.log(merged.get(1)); // eins
console.log(merged.get(2)); // dos
console.log(merged.get(3)); // three
ëª
ì¸ ë¸ë¼ì°ì í¸íì± ê°ì´ 보기
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4