2017-01-31 3 views
1

Я часто использую в Python понимание, чтобы создать список из словаря ключевых значений, отсортированным образом, я определяю отсортированные ключи в списке и использую понимание, чтобы получить сортировку список, я искал вокруг, но не смог найти аналогичный способ сделать следующее в Javascript, кроме использования карты:Понимание списков на основе словаря в Javascript

Есть ли лучший способ сделать это в Javascript?

В Python:

d = {'k2':'v2','k4':'v4','k3':'v3','k6':'v6','k5':'v5'} 
list_keys=['k1','k2','k3','k4','k5','k6'] 

list_wanted_values = [d[c] for c in list_keys] 
#list_wanted_values=['v1','v2','v3','v4','v5','v6'] 

В Javascript:

var js_list_wanted_values = list_keys.map(function(k){ 
    js_list_wanted_values[k] = d[k] 
)} 
+0

просто примечание для 'python' коды: вам не нужно определять' list_keys' списка. вы можете просто: 'list_wanted_values ​​= [d [c] для c в отсортированном (d.keys())] или' list_wanted_values ​​= [v для k, v в отсортированном (d.items(), key = lambda x: x [0])] ', чтобы избежать поиска в дикторе –

+0

@ Ev.Kounis благодарит за заметку. Это действительно более элегантно! –

ответ

3

возможно это

var js_list_wanted_values = list_keys.map(k => d[k]) 
2

Ваш map должно быть больше как

var js_list_wanted_values = list_keys.map(function(k){ 
    return d[k] 
}) 

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