如何在JavaScript中获取密钥的相应值

时间:2012-10-04 10:19:15

标签: javascript

我有这段代码:

var getValuesArray = [];
var setValuesArray = [];


function SetValueJson(key, value, scormVersion, methodCalled)
{
   if (key1 != null) {
     var obj = {
      key: key1,
     value: value1
   }
   setValuesArray.push(obj);
   alert("pushing the key as: " + setValuesArray[key] + " and value as: " + setValuesArray[key].value); //not shure how te reference it?
   return value;
}

function GetValueJson(key, scormVersion, methodCalled) {
   //I will get to this later, want to get the array right first

}

如何引用数组?alert(“将键按下:”+ setValuesArray [key] +“,值为:”+ setValuesArray [key] .value);是不正确的..

感谢

2 个答案:

答案 0 :(得分:2)

我建议您使用Object代替Array

修改后的代码

var setValuesArray = {};

function SetValueJson(key, value, scormVersion, methodCalled)
{
    setValuesArray[key]= value;

警告(“将键按下:”+键+“,值为:”+值);         回报值;     }

function GetValueJson(key, scormVersion, methodCalled) {
          return setValuesArray[key]; // will return 'undefined' if key is not present.
}

答案 1 :(得分:0)

嗯,这基本上取决于你想对这个数据结构做些什么。

如果按顺序保留这些键和值,并且它们的顺序非常重要,那么需要将它们存储在array中。

如果您只需要根据键查找值,那么简单的object就可以了。

假设您需要维护键值数据的顺序,并且您正在使用数组,那么您有两个选择:

  1. 将实际的键值存储保存在object内。对于订单,只保留一个单独的数组,只保留密钥。这应该是什么样的

    var keyValueStore = {},
        keyOrderStore = [];
    
    function store(key, value) {
        keyValueStore[key] = value;
        keyOrderStore.push(key);          
    }
    
    function getValueByIndex(index) {
        // do some bounds checking ofcourse :)
        return keyValueStore[keyOrderStore[index]];
    }
    
    function getValue(key) {
        return keyValueStore[key];
    }
    
  2. 在我看来,这是一个更好的选择。但是,如果您不想维护和同步两个单独的数据结构,可以使用:

    var storage = [];
    
    function store(key, value) {
        storage.push({
            key: key,
            value: value
        });
    }
    
    function getAtIndex(index) {
        return storage[index].value;
    }
    
    function getValue(key) {
        for (var i = storage.length-1; i >= 0; i--) {
            var obj = storage[i];
            if (obj.key === key) return obj.value;
        }
    }
    
  3. 希望这有帮助。