Ведение упорядоченного списка с localStorage? - PullRequest
2 голосов
/ 23 ноября 2011

Скажите, что мое хранилище выглядит так:

1 - turkey
2 - chicken
3 - beef
4 - fish

Если я удалю chicken, я бы хотел обновить его до:

1 - turkey
2 - beef
3 - fish

Мне также нужен способ повторного заказа, поэтому, если я скажу, что fish должен быть первым, я бы хотел обновить его до:

* * 1010

Каков наилучший способ сделать это?

Ответы [ 3 ]

2 голосов
/ 23 ноября 2011

Сохраняйте и извлекайте массивы JSON и управляйте списком с помощью интерфейса List:

String listToJson(List<String> list) {
  JsArrayString array = (JsArrayString) JsArrayString.createArray();

  for (int i = 0; i < list.size(); i++) {
    array.set(i, list.get(i));
  }

  return new JSONArray(array).toString();
}

List<String> jsonToList(String json) {
  JsArrayString jas = JsonUtils.safeEval(json);
  List<String> list = new ArrayList<String>();

  for (int i = 0; i < jas.length(); i++) {
    list.add(jas.get(i));
  }

  return list;
}

void myEntryPoint() {
  ArrayList myList = new ArrayList();
  myList.add("cake");
  myList.add("pie");
  myList.add("ice cream");

  Storage.getLocalStorageIfSupported().
      setItem("myKey", listToJson(myList));

  // ...

  ArrayList otherList =
      jsonToList(Storage.getLocalStorageIfSupported().
          getItem("myKey"));
}
0 голосов
/ 01 октября 2014

Использование http://rhaboo.org. Это слой сахара над localStorage, позволяющий писать такие вещи, как:

var store = Rhaboo.persistent("Fridge");

if (store.fridge === undefined) //first run
  store.write('fridge', ['turkey', 'chicken', 'beef', 'fish']);

for (var i=0; i<store.fridge.length; i++) 
  console.log(store.fridge[i]);

store.fridge.unshift(store.fridge.pop()); //fish, turkey, chicken, beef
//This is all persistent - hit reload and see them rotate

Это также НАМНОГО более эффективно, чем помещение всего массива в одну запись localStorage. В приведенном выше примере rhaboo будет использовать 5 записей для массива и редактировать их по отдельности, когда что-то изменится.

Кстати, я написал rhaboo.

0 голосов
/ 23 ноября 2011

Единственное, о чем я могу думать, это использовать массив.

localstorage.list = [turkey, chicken, beef, fish];

Это даст начальное значение 0 для индейки, вы можете вручную установить индекс на 1 для индейки, 2 для курицы и т. Д.

Чтобы удалить предмет, вам нужно нарезать его:

list.splice(1); //removes chicken

Чтобы перемешать, взгляните на этот пост, который объясняет это довольно хорошо.

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