Dictionary and Map

C++ ¸Ê ó·³ »ç¿ëÇÏ´Â Dictionary ÇÔ¼öÀÌ´Ù.
Dictionary¸¦ ±¸ÇöÇÏ°í ³ª¼­¾ß ¾Ë¾ÒÁö¸¸ ÀÚ¹Ù½ºÅ©¸³Æ®¿¡¼­´Â MapÀ» Á¦°øÇÏ°í ÀÖ´Ù.
DictionaryÀÇ »ç¿ë ¹æ¹ýÀº Map°ú ¶È°°´Ù.

°øºÎ Â÷¿ø¿¡¼­ ¸¶¹«¸® ÇÑ´Ù.

Dictionary »ç¿ë¹ý
var pbook = new Dictionary();
pbook.set("Raymond","123");
pbook.set("David", "345");
pbook.set("Cynthia", "456");
pbook.set("Mike", "723");
pbook.set("Jennifer", "987");
pbook.set("Danny", "012");
pbook.set("Jonathan", "666");
pbook.delete("David");

Map »ç¿ë¹ý1
Map.prototype.showAll = function() {
    for (var [key, value] of this) {
      console.log(key + " = " + value);
    }
}

var pbook = new Map();
pbook.set("Raymond","123");
pbook.set("David", "345");
pbook.set("Cynthia", "456");
pbook.set("Mike", "723");
pbook.set("Jennifer", "987");
pbook.set("Danny", "012");
pbook.set("Jonathan", "666");
pbook.delete("David");
pbook.showAll();

Map »ç¿ë¹ý2
function AddStudent(data) {
    for(var n = 0; n < 5; ++n) {
        var obj = {};
        obj.number = n;
        obj.name = "David" + String(n);
        if(n<=3)
            obj.gender = "man";
        else
            obj.gender = "woman";
        data.set(n, obj);
    }
}

var student = new Map();
AddStudent(student);

for (var [key, value] of student) {
  console.log(key + " = " + value.name);
}

dictionary.js
function Dictionary() {
    this.set = set;
    this.datastore = new Array();
    this.find = find;
    this.delete = remove;
    this.showAll = showAll;
    this.count = count;
    this.clear = clear;
}

function set(key, value) {
    this.datastore[key] = value;
}

function find(key) {
    return this.datastore[key];
}

function remove(key) {
    delete this.datastore[key];
}

function showAll() {
    var arr = Object.keys(this.datastore).sort();
    for (n in arr) {
        console.log(arr[n] + " -> " + this.datastore[arr[n]]);
    }
    /*
    Object.keys(this.datastore).sort().forEach(function(key) {
        console.log(key + " -> " + this.datastore[key]);
    }, this);
    */
}

function count() {
    return Object.keys(this.datastore).length;
    /*
    var n = 0;
    for(var key in Object.keys(this.datastore)) {
      ++n;
    }
    return n;
    */
}

function clear() {
    var arr = Object.keys(this.datastore).sort();
    for(var n in arr) {
      delete this.datastore[arr[n]];
    }
}

array¸¦ »ç¿ëÇÒ¶§ key¸¦ integer ´ë½Å ¹®ÀÚ¿­À» »ç¿ëÇÒ¼ö ÀÖ´Ù.
¹®ÀÚ¿­À» »ç¿ëÇÏ°Ô µÇ¸é array°¡ ¾Æ´Ï¶ó °´Ã¼ ÇÁ·ÎÆÛƼ¶ó´Â°ÍÀ» ¸í½ÉÇØ¾ß ÇÑ´Ù.
Áï, array2["my"]´Â array2.my¿Í °°Àº ±â´ÉÀ» ÇÑ´Ù.

±×·¡¼­, arrayÀÇ lengthµµ Áõ°¡ÇÏÁö ¾Ê´Â´Ù.
Object.keys¸¦ ÀÌ¿ëÇؼ­ ³ëµå °¹¼ö¸¦ ±¸ÇØ¾ß ÇÑ´Ù.

Âü°í)
Map »ç¿ë¹ý
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Map
ÀÚ¹Ù½ºÅ©¸³Æ® ÀڷᱸÁ¶¿Í ¾Ë°í¸®Áò Ã¥ ¼Ò½º
https://github.com/oreillymedia/data_structures_and_algorithms_using_javascript