jQuery Получить ассоциативный массив Key из индекса
Мой вопрос следующий в массиве:
var array = new Array();
array['abc'] = 'value1';
array['def'] = 'value2';
Как мне получить ассоциативный ключ массива, если у меня есть его индекс? Допустим, я хочу ассоциативный ключ ассоциативного ключа arr[0] ( => 'abc') или ассоциативный ключ arr[1] '=> 'def'). Как это возможно в jQuery?
Давайте будем ясны, я не ищу значение и мне не нужно использовать $.each(). Мне просто нужно связать 0 с 'abc' и 1 => 'def' и т. Д. К сожалению, что-то вроде arr[0].assoc_key() не существует T_T Спасибо большое.
3 ответа
Итак, решение довольно простое, вам нужно создать объект, который связывает индексы с ключами, а также ключи со значениями. Вот JSBin, который работает. Обратите внимание, что для добавления элемента вам нужна пользовательская функция (в данном случае addElement), чтобы иметь возможность привязывать и индексы, и ключи в нужных местах. Это черновик, чтобы дать вам представление о том, как это можно сделать!
Если у вас есть какие-либо вопросы или если это не совсем то, что вы ожидали, просто отредактируйте свой вопрос, и я еще раз посмотрю на него. Это должен быть объект, сделанный на заказ, если вы хотите, чтобы поведение, которое вы просили.
Javascript не имеет собственного типа словаря, вам придется написать его. - T McKeown
Это невозможно, и jQuery вообще не входит в картину. Если вы используете массив в качестве словаря, вы делаете что-то не так. - Джон
переосмыслить способ, которым вы делаете это. Возможно, попробуйте массив [0] = {ключ: 'abc', значение: 'значение1'} - Geezer68
@ Geezer68, объекты не поддерживают многомерные данные, массив, над которым я работаю, имеет глубину 3 уровня (я знаю, что я не говорил об этом в своем первоначальном сообщении, но я не думал, что это было актуально).
В любом случае, спасибо, ребята, это отвечает на вопрос! Я переосмыслил это тогда;-)
РЕДАКТИРОВАТЬ: Я думаю, я просто добавлю уровень:
var array = new Array();
array[] = 'abc';
array[0] = 'value1'
Я не знаю другого, кроме как с помощью for ... in
, Итак, вот как я это делаю и надеюсь, что вы получите лучший ответ (потому что я хочу знать, а!).
var array = new Array();
array['abc'] = 'value1';
array['def'] = 'value2';
var listKeys = [];
for(x in array) listKeys.push(x);
console.log(listKeys); // ['abc', 'def']
но используя [string]
объект массива добавляет свойство к объекту, а не к массиву. Так что может быть лучше инициализировать это так:
var array = {};
Вы можете узнать больше информации об этой технике в этом вопросе и некоторые ограничения, почему вы не должны полагаться на это.