Фальшивые словари JavaScript - PullRequest
       8

Фальшивые словари JavaScript

1 голос
/ 14 октября 2008

Я объявил массивы Javascript таким образом, чтобы я мог получить к ним доступ с помощью ключа, но это было давно, и я забыл, как я это сделал.

По сути, я хочу сохранить два поля: уникальный ключ и его значение. Я знаю, что есть способ сделать это .. что-то вроде:

var jsArray = new {key: 'test test', value: 'value value'},
              new {key: 'test 2', value: 'value 2'};

и доступ как:

value = jsArray[key]

Может ли кто-нибудь напомнить мне?

Ответы [ 4 ]

7 голосов
/ 14 октября 2008

Вы можете сделать это по-разному:

var a = {'a':0, 'b':1, 'c':2};

var b = new Array();
b['a'] = 0;
b['b'] = 1;
b['c'] = 2;

var c = new Object();
c.a = 0;
c.b = 1;
c.c = 2;
2 голосов
/ 14 октября 2008

Если вы уже используете Prototype, попробуйте использовать его Hash. Если вы используете jQuery, попробуйте использовать Map.

2 голосов
/ 14 октября 2008
var myFancyDictionary = {
  key: 'value',
  anotherKey: 'anotherValue',
  youGet: 'the idea'
}
0 голосов
/ 14 октября 2008

Вот класс JavaScript, который предоставляет простой словарь.

if( typeof( rp ) == "undefined" ) rp = {};

rp.clientState = new function()
{
    this.items = new Object();
    this.length = 0;

    this.set = function( key, value )
    {
        if ( ! this.keyExists( key ) )
        {
            this.length++;
        }
        this.items[ key ] = value;    
    }

    this.get = function( key )
    {
        if ( this.keyExists( key ) )
        {
            return this.items[ key ];
        } 
    }

    this.keyExists = function( key )
    {
        return typeof( this.items[ key ] ) != "undefined"; 
    }

    this.remove = function( key )
    {
        if ( this.keyExists( key ) )
        {
            delete this.items[ key ];
            this.length--;   
            return true;
        }
        return false;
    }

    this.removeAll = function()
    {
        this.items = null;
        this.items = new Object();
        this.length = 0;
    }
}

Пример использования:

// Add a value pair.
rp.clientState.set( key, value );

// Fetch a value.
var x = rp.clientState.Get( key );

// Check to see if a key exists.
if ( rp.clientState.keyExists( key ) 
{
    // Do something.
}

// Remove a key.
rp.clientState.remove( key );

// Remove all keys.
rp.clientState.removeAll();
...