2016-08-06 5 views
2

Я положил некоторые данные в LocalStorage, и я хочу, чтобы получить на ключевые имена в массиве, упорядоченных по значению:LocalStorage порядок сортировки по значению

Франция: 0
Италия: 1
Англии: 2
Германия: 3
.. и т.д.

function getCountries() { 
    "use strict"; 
    var returnArray = []; 
    for (var i = 0; i < localStorage.length; i++) { 
     returnArray.push(localStorage.key(i)); 
    } 

    return returnArray; 
} 

Сейчас порядок ключевых имен в массиве, кажется, довольно случайным образом - как заказать массив по значениям?

+0

Вы посмотрели на это, http://stackoverflow.com/questions/3959817/html5-local-storage-sort – R4nc1d

+0

Вы можете поместить весь массив как JSON в одну запись. – gcampbell

ответ

1

Если вы хотите отсортировать по нескольким позициям, вы можете создать прототип.

Array.prototype.sortOnValue = function(key){ 
    this.sort(function(a, b){ 
     if(a[key] < b[key]){ 
      return -1; 
     }else if(a[key] > b[key]){ 
      return 1; 
     } 
     return 0; 
    }); 
} 

Создал fiddle о том, как его использовать.

+0

Очень полезная помощь! Я не знаком с этой настройкой - как получить имя страны из места в массиве? Если i alert arr [0], я получу [Объект объекта]? –

+0

Работает отлично сейчас - я просто добавлю, что отсутствует синтаксический анализ вокруг [key] и b [key] в приведенном выше примере, чтобы он работал правильно;) –

+0

@ TheSimon, спасибо, что обновил мою скрипку и код, я был не уверен, что ваше значение было строкой или int. – R4nc1d

0
var countries = Object 
    .keys(localStorage) 
    .sort(function(a, b) { 
     return localStorage[a] - localStorage[b]; 
    }) 
Смежные вопросы