HTML5 локальная сортировка - PullRequest
       7

HTML5 локальная сортировка

5 голосов
/ 18 октября 2010

Я использую локальное хранилище для хранения записей пользователя и отображаю записи на другой странице.Мне нужен способ сортировки по дате и времени редактирования.Есть ли способ сделать это с HTML5.Если нет, то какой самый простой / эффективный способ сделать это?

Спасибо за ввод.

Ответы [ 2 ]

4 голосов
/ 06 июля 2011

Если ваши ключи / значения имеют свой собственный порядок (алфавитный, числовой и т. Д.), То добавление временной метки в них может быть излишним.Хотя объект Storage не имеет метода сортировки, вы можете создать новый Array () и затем отсортировать его.

function SortLocalStorage(){
   if(localStorage.length > 0){
      var localStorageArray = new Array();
      for (i=0;i<localStorage.length;i++){
          localStorageArray[i] = localStorage.key(i)+localStorage.getItem(localStorage.key(i));
      }
   }
   var sortedArray = localStorageArray.sort();
   return sortedArray;
}

Недостатком этого является то, что массив не является ассоциативным, но это по своей природеJavaScript Array объект.Вышеприведенная функция решает эту проблему путем встраивания имени ключа в значение.Таким образом, он все еще там, и функции, которые вы будете использовать для отображения отсортированного массива, могут сделать работу по отделению ключей от значений.

1 голос
/ 20 октября 2010

Вы должны каким-то образом связать отметку времени с сохраненным значением, вы можете создать объект-оболочку для каждого значения и сохранить значение и отметку времени в одном объекте. Предполагая, что у вас есть значение myvalue, которое вы хотите сохранить со ссылкой myref:

var d=new Date();
var storageObject = {};
storageObject.value = myvalue;
storageObject.timestamp = d.getTime();
localStorage.setItem(myref, JSON.stringify(storageObject));

На другой странице вам нужно затем повторно скопировать ваши объекты в массив и реализовать вашу функцию compareFunction .

Другой вариант - использовать База данных Web SQL и API индексированной базы данных , которая позволяет более естественно хранить и запрашивать такого рода многогранную информацию, но вам, вероятно, придется создать какая-то абстрактная оболочка, чтобы все работало легко в браузере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...