我有这段代码:
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);是不正确的..
感谢
答案 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
就可以了。
假设您需要维护键值数据的顺序,并且您正在使用数组,那么您有两个选择:
将实际的键值存储保存在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];
}
在我看来,这是一个更好的选择。但是,如果您不想维护和同步两个单独的数据结构,可以使用:
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;
}
}
希望这有帮助。