Как получить доступ к первому ключу «ассоциативного» массива в JavaScript? - PullRequest
8 голосов
/ 20 декабря 2010

У меня есть js 'ассоциативный' массив, с

array['serial_number'] = 'value'

serial_number и значением являются строки.например array['20910930923'] = '20101102'

Я отсортировал по значению, работает нормально.Допустим, я возвращаю объект «отсортированный»;

Теперь я хочу получить доступ к первому ключу из массива «отсортированный».Как мне это сделать?Я не могу думать, что мне нужна итерация с

for (var i in sorted)

и просто остановиться после первой ...

спасибо

edit: просто чтобы уточнить, я знаючто js не поддерживает ассоциативные массивы (поэтому я положил его в кавычки в заголовке).

Ответы [ 4 ]

4 голосов
/ 20 декабря 2010

Свойства объекта JavaScript указаны без порядка, много, хотя многие хотят, чтобы это было иначе . Если вам нужно упорядочить, откажитесь от любой попытки использовать объект и используйте вместо него Array, либо для хранения объектов имя-значение:

var nameValues = [
    {name: '20910930923', value: '20101102'},
    {name: 'foo', value: 'bar'}
];

... или как упорядоченный список имен свойств для использования с существующим объектом:

var obj = {
   '20910930923': '20101102',
   'foo': 'bar'
};

var orderedPropertyNames = ['20910930923', 'foo'];
2 голосов
/ 03 января 2015

Попробуйте это:

// Some assoc list
var offers = {'x':{..some object...}, 'jjj':{...some other object ...}};

// First element (see attribution below)
return offers[Object.keys(offers)[0]];

// Last element (thanks to discussion on finding last element in associative array :)
return offers[Object.keys(offers)[Object.keys(offers).length - 1]];
1 голос
/ 20 декабря 2010

На самом деле JavaScript не поддерживает ассоциативные массивы, поэтому вы не можете просматривать его в неявном порядке (например, вы не можете получить к нему доступ через свойство indexer array[0] не получит доступ к первому элементу вашего объекта) , Синтаксис - это то, что делает его похожим, но на самом деле это не так. Таким образом, у вас нет «заказа» на ваши объекты.

http://www.hunlock.com/blogs/Mastering_Javascript_Arrays

Javascript не имеет и не имеет Поддержка ассоциативных массивов. Тем не мение… Все массивы в Javascript являются объектами и синтаксис объекта Javascript дает базовая эмуляция ассоциативного Массив. По этой причине пример код выше на самом деле будет работать. Быть предупредил, что это не настоящий массив и у него есть реальные питфалы, если вы попытаетесь используй это. Элемент «персона» в пример становится частью массива свойства и методы объекта, просто как .length, .sort (), .splice () и все остальные встроенные свойства и методы.

0 голосов
/ 20 декабря 2010

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

Таким образом, ответ будет arrayKeyValueReversed ['20101102'] = '20910930923';

Когда вы сортируете массив, используйте первый элемент (array [0]) в качестве ключа, чтобы получить значение в arrayKeyValueReversed.

...