Как сохранить object, var, array в localstorage?

#javascript #angularjs #arrays #local-storage

#javascript #angularjs #массивы #local-storage

Вопрос:

В моем контроллере у меня есть это прошение $ http:

     $http({
    method: 'POST',
    url: 'http://localhost/nPanelarencion/app/php/consulta.php',
    headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json'
    }
})

  .then(function(data) {
     var dat = data.data;

     for (var i = 0; i < dat.length; i  ) {
       dat[i]
      var runum = dat[i].rut  ","  dat[i].numero
      console.log("show: ",runum);
      localStorage.setItem("rutnum",runum);
     }
  });
  

в моем console.log(runum) показе это:

Изображение

Проблема в том, что в моем localstorage я сохраняю только одно число, перезаписывая предыдущую переменную. В другом контроллере-> функция у меня есть это:

       function loadAll() {
    var rut = localStorage.getItem("rutnum").split(",")[0];
    console.log("el rut es: ",JSON.stringify(rut));


    var num = localStorage.getItem("rutnum").split(",")[1];
    console.log("El numero es: ",parseInt(num));
    var finalnum = parseInt(num)

    var repos = [
      {
        'rut'      : rut,
        'numero'   : finalnum

      }

    ];
    return repos.map( function (repo) {
      repo.value = repo.rut.toLowerCase();
      return repo;
    });
  }
  

В моем html отображается только одно число, а не все номера rut, как я хочу.

Это изображение localstorage:

рис. 2

Комментарии:

1. Вы каждый раз перезаписываете значение rutnum в localstorage?

2. да, я перезаписываю значение

3. у вас есть какое-либо решение для меня? пожалуйста.

4. Он сохраняет только одно значение, потому что вы продолжаете его перезаписывать. Localstorage — это карта, если вам нужно много значений, они должны иметь уникальные ключи.

5. Добавьте уникальный ключ для каждого значения, которое вы сохраняете. Прямо сейчас вы используете только «rutnum». В вашем случае вы могли бы использовать ‘i’ в вашем цикле for, например. Я не знаю, что представляют ваши данные или каков ваш вариант использования, поэтому могут быть более подходящие ключи.

Ответ №1:

Просто поместите все ваши объекты в массив, затем сохраните этот массив с помощью stringify в локальном хранилище:

 .then(function(data) {
     var dat = data.data;
     var runum = [];
     for (var i = 0; i < dat.length; i  ) {
       dat[i]
       runum.push(dat[i].rut  ","  dat[i].numero);
       console.log("show: ",runum);
     }

     localStorage.setItem("rutnum",JSON.stringify(runum));
  });
  

Когда вам нужны данные обратно из хранилища, вы должны parse их:

 var my_data = JSON.parse(localStorage.getItem("rutnum"));