2013-12-09 3 views
2

Я программист perl, изучающий javascript. В perl я часто использовал хеши для создания «структур данных» из данных, возвращаемых из запроса базы данных. Например, я хотел бы построить хэши так:Хеш хеш списка списков в javascript

*loop through list of data* 
    push(@{$hash{$key1}{$key2}}, [$value1, $value2, $value3, $value4]); 
*endloop* 

это будет добавить ссылку на список из четырех значений в виде списка в хэш (с несколькими ключами).

Мне сложно найти информацию о том, как реализовать аналогичную структуру в javascript. Моя цель - прочитать в файле JSON, который имеет список объектов (который не имеет особого порядка) и превратить его в хеш, чтобы его сортировать по клавишам, а затем отображать его в таблице HTML.

Возможно, это неправильный способ подумать об этой проблеме, а javascript будет иметь другой подход. Я хотел бы знать, возможно ли то, что я пытаюсь сделать, код для создания хэша и код для доступа к хэшу.

Спасибо, Роб

+0

Есть ли причина, что вы не просто сделать массив объектов, где каждый объект содержит ваши 4 штучки? – carter

+0

вы хотите превратить массив объектов в объект массивов? – dandavis

+0

Возможный дубликат [Как разобрать JSON в JavaScript] (http://stackoverflow.com/questions/4935632/how-to-parse-json-in-javascript) – user2357112

ответ

1

Javascript не имеет упорядоченный хеш и поиск с несколькими ключами. Вы можете использовать свойства объекта для создания поиска с помощью единственного уникального ключа, и тогда вы можете использовать это понятие по мере необходимости. См. this answer за идею о том, как реализовать простую форму хэша или установить в javascript.

Основная идея заключается в том, что вы создаете объект, а затем добавить пары ключ/значение для него:

var myLookup = {}; 
myLookup[key1] = value1; 
myLookup[key2] = value2; 

Затем вы можете посмотреть значение по ключевым:

console.log(myLookup[key1]); // shows value1 

Если вам нужна более конкретная помощь, вы должны быть более конкретными в своем вопросе. Покажите нам, с чего вы начинаете JSON, и точно описываете, как вы хотите получить к нему доступ, чтобы мы могли выяснить, какой тип структуры данных JS имеет наибольшее значение для его ввода. Помните, что после анализа JSON это уже в структуре данных javascript в этой точке, поэтому возникает вопрос, какой доступ вам нужно сделать для данных, чтобы понять, нужно ли реструктурировать данные с помощью определенных ключевых поисков?

Как правило, лучше сосредоточиться на проблеме/решении и НЕ пытаться сделать что-то так же, как это делает другой язык.

1

Хеш в Perl - это всего лишь набор пар ключ/значение. Javascript аналогичная структура данных - Objects. Вы могли бы сделать то, что вы хотите

> a = {} 
{} 
> a.res = [] 
[] 
> a.res.push([1,2,3]) 
1 
> a.res.push([3,"sd",1]) 
2 
> a 
{ res: 
    [ [ 1, 2, 3 ], 
    [ 3, 'sd', 1 ] ] } 
2

Это мой прямой перевод, испытанный в строке консоли Google Chrome >

> hash = {} 
Object {} 

> hash["key1"] = {} 
Object {} 

> hash["key1"]["key2"] = [] 
[] 

> hash["key1"]["key2"].push([ 'value1', 'value2', 'value3', 'value4']) 
1 

> hash 
Object {key1: Object} 

> JSON.stringify(hash, null, 2) 
"{ 
    "key1": { 
    "key2": [ 
     [ 
     "value1", 
     "value2", 
     "value3", 
     "value4" 
     ] 
    ] 
    } 
}" 
Смежные вопросы