Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 本地存储的唯一对象数组_Javascript_Jquery_Local Storage - Fatal编程技术网

Javascript 本地存储的唯一对象数组

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

我想将一个对象推送到一个名为objects的ArrayList,并将该数组存储到localstorge。此数组使用新对象填充每个调用。如果阵列中仍存在某个对象,则将替换较旧的对象

到目前为止,我的代码是:

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);
}