官术网_书友最值得收藏!

Exploring the origin of sets and maps

Before we try and understand how to use sets and maps in real-world applications, it is more meaningful to understand the origin of sets and maps and why we need them in JavaScript in the first place.

Traditional arrays, until ES5, did not support a few major features, that developers usually want to leverage:

  • Acknowledging that it contains a particular element
  • Adding new elements without having duplicates

This led to developers implementing their own versions of sets and maps, which were available in other programming languages. A common implementation of a set and map using JavaScript's Object is as follows:

// create an empty object
var setOrMap = Object.create(null);

// assign a key and value
setOrMap.someKey = someValue;

// if used as a set, check for existence
if(setOrMap.someKey) {
// set has someKey
}

// if used as a map, access value
var returnedValue = setOrMap.someKey;

Although a lot of prototype headaches can be avoided by using Object.create to create the set or mapit still does not resolve the fact that the main Key that is being held can only be a string because Object only allows keys as strings, so we could unintentionally end up with values overwriting each other:

// create a new map object
let map = Object.create(null);

// add properties to the new map object
let b = {};
let c = {};
map[b] = 10
map[c] = 20

// log map
Object [object Object]: 20
主站蜘蛛池模板: 景洪市| 马关县| 黄梅县| 厦门市| 临海市| 西贡区| 辉县市| 达州市| 息烽县| 银川市| 正宁县| 花莲市| 荣昌县| 平利县| 诸暨市| 文水县| 苍溪县| 沁源县| 栖霞市| 英吉沙县| 芷江| 云阳县| 安吉县| 蓬安县| 安塞县| 枣强县| 姜堰市| 明光市| 房产| 南岸区| 南昌市| 阳曲县| 班戈县| 边坝县| 南川市| 苍溪县| 海伦市| 仲巴县| 阿城市| 旬邑县| 永定县|