2016-05-31 5 views
1

У меня есть хэш, как показано нижеМусор Сортировка хэш по значениям в массиве

a ={ 
    0: [0, "A9"], 
    2: [0, "A9.4"],   
    8: [0, "A9.1"], 
    6: [1, "A9.5"], 
    5: [0, "A9.2"], 
    7: [2, "A9.3"] 
}; 

мне нужен отсортированный массив, соответствующий второму элементу массива каждого значения.

т.е., если мой массив в виде a = {key: [value_1_integer, value_2_string]}

мне нужно отсортировать мой хэш по value_2_string поэтому результирующий массив является

result = [0, 8, 5, 7, 2, 6] 
+2

Вы должны опубликовать свой код и объяснить, что пошло не так с ним. Stack Overflow не является сервисом «написать мой код», но мы поможем, если вы попытаетесь столкнуться с проблемами :) – Archer

+2

Я согласен с @Archer. Кроме того, лучше заменить «hash» на «hashmap» или аналогичный - «hash» обычно ссылается на значение, полученное в результате хэширования объекта, а не на структуру данных. –

+0

Дубликат [Список ключевых слов объекта JavaScript] (http://stackoverflow.com/q/3068534/218196) и [Сортировка массива объектов по значению свойства строки в JavaScript] (http://stackoverflow.com/q/1129216/218196). Попытайтесь разделить проблему на подзадачи и найти решения для них. –

ответ

6

Вы можете применить Array#sort на ключи с обратный вызов, который принимает второй элемент свойства для сортировки.

var object = { 0: [0, "A9"], 2: [0, "A9.4"], 8: [0, "A9.1"], 6: [1, "A9.5"], 5: [0, "A9.2"], 7: [2, "A9.3"] }, 
 
    keys = Object.keys(object).sort(function (a, b) { 
 
     return object[a][1].localeCompare(object[b][1]); 
 
    }); 
 

 
console.log(keys);

Смежные вопросы