我需要存储(许多)对象或数据数组,这些数据需要具有以下条件:
我需要能够轻松地将一组新数据添加到现有数据中
我需要能够按照添加的日期/时间对数据进行排序(按照按条目的顺序排列数组)
我需要能够使用引用(整数或字符串)轻松获取条目。这很重要,目前我必须使用$ .each()来遍历我的数据,直到找到我想要的条目。
我尝试过使用像
这样的结构saved_info = {
1001: {//all my data for ref 1001},
1002: {//all my data for ref 1002}
}
给了我一些想要能够轻松获取信息的信息:
info = saved_info[1001];
但是,我使用的参考号码不按顺序排列 - 我使用了给我的参考(它是唯一的标识符),因此对象不是按照添加/保存项目的顺序排列的推压。
答案 0 :(得分:2)
尝试像这样构建一个Json,
var xJson = {
"1001":{//all my data for ref 1001},
"1002":{//all my data for ref 1002}
};
您可以使用括号表示法按照您的意愿获取记录,因为我们使用数值作为键。
var xData = xJson["1001"];
答案 1 :(得分:1)
您可以使用两个对象:
这样你就可以(i)按键查找元素(ii)按照插入顺序循环元素。粗略的结构轮廓:
var DataObject = {
data: {},
sort: []
};
以下是向此结构添加数据的方法:
DataObject.data[1004] = {name: "Test 4"};
DataObject.sort.push(1004);
DataObject.data[1001] = {name: "Test 1"};
DataObject.sort.push(1001);
DataObject.data[1003] = {name: "Test 3"};
DataObject.sort.push(1003);
DataObject.data[1002] = {name: "Test 2"};
DataObject.sort.push(1002);
以下是您执行随机访问的方式:
console.log(DataObject.data[1001].name);
console.log(DataObject.data[1003].name);
以下是按照添加顺序迭代所有元素的方法:
var i;
for (i = 0; i < DataObject.sort.length; i++) {
console.log(DataObject.data[DataObject.sort[i]].name);
}
可以将整个逻辑包装在一个类中:
function DataObject() {
this.data = {};
this.sort = [];
this.setItem = function (k, v) {
this.data[k] = v;
this.sort.push(k);
};
this.getItemByKey = function (k) {
return this.data[k];
};
this.getItemByPos = function (i) {
return this.data[this.sort[i]];
};
this.getAllItems = function () {
var i, r = [];
for (i = 0; i < this.sort.length; i++) {
r.push(this.data[this.sort[i]]);
}
return r;
};
}
var t = new DataObject();
t.setItem(1001, {name: "Test 1"});
t.setItem(1002, {name: "Test 2"});
t.setItem(1003, {name: "Test 3"});
t.setItem(1004, {name: "Test 4"});
console.log(t.getItemByKey(1001));
console.log(t.getItemByPos(0));
console.log(t.getAllItems());