1

私はこのコードを持っています:

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( "pushing the key as:" + setValuesArray [key] + "and value as:" + setValuesArray [key] .value); 正しくありません。

ありがとう

4

2 に答える 2

2

Objectの代わりに使用することをお勧めしますArray

変更されたコード

var setValuesArray = {};

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

alert( "キーを次のように押す:" +キー+"および値を次のように:" +値); 戻り値; }

function GetValueJson(key, scormVersion, methodCalled) {
          return setValuesArray[key]; // will return 'undefined' if key is not present.
}
于 2012-10-04T10:32:15.453 に答える
0

これは基本的に、このデータ構造で何をしたいかによって異なります。

これらのキーと値を順番に保持し、それらの順序が重要である場合は、それらをに格納する必要arrayがあります。

キーに基づいて値を検索するだけでよい場合は、単純なものobjectで十分です。

入ってくるキー値データの順序を維持する必要があり、そのために配列を使用しているとすると、2つのオプションがあります。

  1. 実際のKey-Valueストアを。内に保持し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. 私の意見では、これはより良い選択肢です。ただし、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;
        }
    }
    

お役に立てれば。

于 2012-10-04T14:30:18.397 に答える