Как использовать входное значение в качестве индекса массива

#jquery

#jquery

Вопрос:

У меня действительно нет идей. Я читал об этой проблеме, но не нашел ответа, который соответствовал бы моим потребностям. Итак, вот сценарий

У меня есть несколько входных данных, где я получаю значение по их id

 <input type="hidden" id="name" value="Taco house" />
<input type="hidden" id="pin" value="Mexican" />
  

И я пытаюсь использовать значение как index для построения массива

 var name = $('#name').val();
var pin = $('#pin').val();

markersData = {
    pin: [ //here it should put 'Mexican' instead it puts 'pin'
    {
        name: name,
        location_latitude: 43.5391318, 
        location_longitude: 10.3020171,
        //other nodes here
    }
    ]
};
  

Если я печатаю pin переменную перед передачей в массив, она выводит ее фактическое значение, но как только я перехожу к массиву, значение теряется, и индекс становится pin-кодом.

Конечно, это очевидный вопрос, но, поскольку я не настолько хорош в jquery, мне нужна помощь.

Комментарии:

1. Можете ли вы опубликовать свой полный код?

2. Ваша проблема совсем не ясна, но вы пробовали var foo = markersData.pin[parseInt(pin, 10)]

3. Не могли бы вы опубликовать дополнительную информацию? трудно понять проблему из вашего описания

4. У вас нет pin-кода с атрибутивным pin-кодом. У вас есть именованный PIN-код. Итак, как это name:name выглядит? name:"Taco house" ?

5. @mplungjan да, на самом деле имя выглядит так name:"Taco house"

Ответ №1:

Это должно сработать :

 var name = $('#name').val();
var pin = $('#pin').val();
markersData = {};
markersData[pin] = [{
    name: name,
    location_latitude: 43.5391318,
    location_longitude: 10.3020171,
    //other nodes here
}];
  

Ваш способ не сработает, потому что анализатор рассматривает pin как строку, а не как содержимое вашей переменной «pin». Вы также не можете использовать markersData.pin по той же причине.

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

Комментарии:

1. Это markersData[pin] то же markersData.pin самое, что и? Пожалуйста, объясните, что вы на самом деле здесь делаете, чтобы помочь спрашивающему понять, почему это должно «делать трюк».

2. @Zack, я на самом деле обновлял свой ответ, чтобы добавить некоторые пояснения. Это также должно ответить на ваш вопрос.

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

4. @Fabio Кто-нибудь может дать вам лучшее объяснение, поскольку я не разбираюсь во внутренней работе javascript, но, насколько я понимаю, анализатор не видит pin как переменную, когда вы используете ее в качестве ключей объекта. Я думаю, что это предназначено для предотвращения путаницы, JS не может знать, хотите ли вы использовать строку или объявленную вами переменную.

5. Я вижу, я тоже не эксперт, я знаю, что он должен правильно работать в php