JavaScript假词典

JavaScript假词典,javascript,arrays,dictionary,associative-array,Javascript,Arrays,Dictionary,Associative Array,我已经声明了Javascript数组,这样我就可以通过一个键访问它们,但那是很久以前的事了,我已经忘记了我是如何做到的 基本上,我有两个要存储的字段,一个唯一的键和它的值。我知道有办法做到这一点。。比如: var jsArray = new {key: 'test test', value: 'value value'}, new {key: 'test 2', value: 'value 2'}; 访问方式如下: value = jsArray[key] 有人能

我已经声明了Javascript数组,这样我就可以通过一个键访问它们,但那是很久以前的事了,我已经忘记了我是如何做到的

基本上,我有两个要存储的字段,一个唯一的键和它的值。我知道有办法做到这一点。。比如:

var jsArray = new {key: 'test test', value: 'value value'},
              new {key: 'test 2', value: 'value 2'};
访问方式如下:

value = jsArray[key]

有人能提醒我吗?

你可以用不同的方式:

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;

您可以通过不同的方式来实现:

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;

如果您已经在使用Prototype,请尝试使用其哈希。如果使用jQuery,请尝试使用Map。

如果您已经在使用Prototype,请尝试使用其哈希。如果使用jQuery,请尝试使用Map。

这里有一个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();

下面是一个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();

JS中的所有对象数组或其他对象都可以被索引-从技术上讲,任何索引操作,a[b]都与a相同虽然显然对于数组等,没有JS引擎会这样做:DAll对象数组或JS中的其他对象可以被索引——从技术上讲,任何索引操作,a[b]都与a相同虽然显然对于数组等没有JS引擎会这样做:值得注意的是a['b']和a.b是相同的,事实上a[0]和a.0是相同的,但只有JS语法阻止你这样做:染料,内部是以相同的方式访问的,这是你的选择使用:值得注意的是a['b']和a.b是一样的,事实上a[0]和a.0是一样的,只是JS语法阻止了你这么做:染料,内部是以同样的方式访问的,这是你的选择女巫口味使用:这似乎有点笨手笨脚。有什么特别的原因需要这些函数来完成所有这些事情吗?aaaidan,你会遗漏什么?@rp我会删除所有东西,你没有在那里定义一个操作,除了长度之外,没有为内置对象定义。这似乎有点笨手笨脚。有什么特别的原因需要这些函数来完成所有这些事情吗?aaaidan你会忽略什么?@rp我会删除所有东西,你没有在那里定义一个除了长度之外没有为内置对象定义的操作