Javascript 本地存储的唯一对象数组
我想将一个对象推送到一个名为objects的ArrayList,并将该数组存储到localstorge。此数组使用新对象填充每个调用。如果阵列中仍存在某个对象,则将替换较旧的对象 到目前为止,我的代码是:Javascript 本地存储的唯一对象数组,javascript,jquery,local-storage,Javascript,Jquery,Local Storage,我想将一个对象推送到一个名为objects的ArrayList,并将该数组存储到localstorge。此数组使用新对象填充每个调用。如果阵列中仍存在某个对象,则将替换较旧的对象 到目前为止,我的代码是: function pushToStorage(groupId, objectId, groupIcon, displayString) { var objKey = "object_" + groupId + "_" + objectId; var objects = storag
function pushToStorage(groupId, objectId, groupIcon, displayString) {
var objKey = "object_" + groupId + "_" + objectId;
var objects = storage.get("objects");
if (objects) {
console.log($objects);
} else {
objects = [];
}
var object = {
groupid: groupId,
objectid: objectId,
groupicon: groupIcon,
display: displayString
};
objects[objKey] = object;
console.log(objects);
storage.set("objects", objects);
}
我使用这个jquery插件
我不是一个JSPro,目前,只有一个对象被正确存储。
所以我的问题是:
如何将对象数组存储到本地存储器,将其取回,并向该数组添加新对象
如何管理此数组中只有一个唯一对象
如何将数组限制在50个最新的数组和踢旧的数组
thx提供任何建议或代码片段
编辑:有些人将此标记为重复-但链接的答案只是我的答案的一部分。我以前读过这篇文章,但我的问题是设置/获取具有唯一对象的数组。我觉得更复杂 在您的情况下,objects=[]将无法将其存储到localStorage,请将其更改为objects={}
测试一下
var objects = [];
objects['objkey'] = {red:'#FF0000'}
var json_str = JSON.stringify(test);
console.log(json_str)
// []
对于第1点和第2点,由于它使用的是对象键名称,因此不会有重复项,它将被新值覆盖,不需要其他操作
对于第3点,如果执行对象[objKey]=object;它会将对象附加到最后一个位置,所以要删除的最早位置是索引0
与使用下划线创建自己的系统不同,使用一些预先存在的系统可能会更容易,JSON出现在脑海中。这是一个例子。。
function pushToStorage(groupId, objectId, groupIcon, displayString) {
var objKey = "object_" + groupId + "_" + objectId;
var objects = storage.get("objects");
if(objects !== null) {
console.log(objects);
// if not objKey and length objects more than 50 delete oldest
if(storage.isSet(objects[objKey]) === false && Object.keys(objects).length == 50){
// delete oldest object
delete objects[0];
}
}
else {
objects = {};
}
var object = {
groupid: groupId,
objectid: objectId,
groupicon: groupIcon,
display: displayString
};
objects[objKey] = object;
//console.log(objects);
storage.set("objects", objects);
}