1

ここで少し問題があります。次のような配列があります。

function crearObjetos()
{
  var palabraPeso = "peso";
  var palabraFecha = "Fecha";
  var localStorageKey000 = "objetosPesoFecha";
  var contador = 0;
  var pesoFecha = new Array(); //THE ARRAY 
  while(contador < 365)
  {
      var nuevoObjeto = new Object;
      var fechaActual = new Date();
      nuevoObjeto.peso = 0;
      nuevoObjeto.fecha = fechaActual;
      nuevoObjeto.id = contador; 
      pesoFecha[contador] = nuevoObjeto; //SAVE OBJECTs IN THE ARRAY
      contador = contador +1;

  }
  if (Modernizr.localstorage) 
  {
    localStorage.setItem(localStorageKey000, pesoFecha); //STORAGE THE ARRAY
  }
}

問題は、ローカルストレージに配列をロードしようとすると、データにアクセスできず、すべてが「未定義」であり、理由がわからないことです...配列からデータをロードする方法は次のとおりです(この場合、最初の objetc のみ):

function damePrimerObjetoPesoFecha()
{
   //LOAD THE ARRAY FROM LOCAL STORAGE
   var localStorageKey000 = "objetosPesoFecha";
   var arrayDeObjetos = localStorage.getItem(localStorageKey000);

   //CHECK IN AN ALERT IF THE DATA IS OK
   alert("El primero que devuelve"+arrayDeObjetos[0].id);

   //RETURN THE FIRSTONE
   return arrayDeObjetos[0];
}
4

4 に答える 4

1

localStorage は、データを文字列としてのみ保存します。
配列を JSON にストリンファイして保存し、ロード時に解析することができます

localStorage.setItem(localStorageKey000, JSON.stringify(pesoFecha)); //STORAGE THE ARRAY

var arrayDeObjetos = JSON.parse(localStorage.getItem(localStorageKey000));
于 2013-07-31T19:07:20.703 に答える
1

LocalStorage は文字列のみを格納できます。また、JSON.stringify は日付オブジェクトを文字列に変換することを覚えておく必要があります。そのため、JSON.parse を介して逆シリアル化する場合、その文字列に基づいて配列から各オブジェクトの日付を手動で作成する必要があります。まず:

localStorage.setItem(localStorageKey000, JSON.stringify(pesoFecha)); 

その後

 var arrayDeObjetos = JSON.parse(localStorage.getItem(localStorageKey000));
 arrayDeObjetos.forEach(function(objecto){
      objecto.fecha = new Date(objecto.fecha );
 })
于 2013-07-31T19:07:26.957 に答える