Получение значения единственного элемента ассоциативного массива в JavaScript

25.07.2010 13:47 / Артём Волк / 830 просмотров / ...

В разрабатываемом приложении серверная часть предоставляла данные в JSON-формате примерно такого вида:

var json_data = {
	features: {
			feature1: { 4401: 'Искомое значение 1'},
			feature2: { 4056: 'Искомое значение 2'},
			feature3: { 1123: 'Искомое значение 3'},
			...
	}
};

По логике приложения нужно было перебрать все значения объекта features и получить строки отмеченные на листинге как искомые. Проблема заключалась в том, что нужная переменная является значением единственного элемента ассоциативного массива (например, feature1) с заранее неизвестным ключом (например, для feature1 значение 4401 заранее неизвестно).

Решение (оригинал решения):

for (first in features.feature1) break;
alert(features.feature1[first]);

Важное замечение о работе цикла for..in: не гарантируется, что порядок перебора свойств объекта будет одинаковым для каждого запуска цикла. В этом же случае (с одним элементом в массиве), это не является ограничением.