Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Массив не принимает значение переменной как ключ (https://javascript.ru/forum/jquery/64338-massiv-ne-prinimaet-znachenie-peremennojj-kak-klyuch.html)

wet 04.08.2016 07:54

Массив не принимает значение переменной как ключ
 
Есть инпуты
<input class='in' type='text' data-id='1' value='text 1'>
<input class='in' type='text' data-id='2' value='text 2'>
<input class='in' type='text' data-id='3' value='text 3'>
<input class='in' type='text' data-id='4' value='text 4'>
Пробегаемс я по ним с помощью each
var answer = [];
 
$('.in').each(function(){
    var cur_el = $(this);
    var id = cur_el.attr('data-id');
    id = parseInt( id );
    var input = cur_el.val();
    
    console.log(question_id);
 
    answer = {id : input};
    //answer.question_id = input;
}); 
 
console.log(answer);
Нужно записать в массив data-id как ключ и value как значение, но почему-то переменная id при записи в массив принимается как строка. Подскажите почему такое поведение и как исправить?

рони 04.08.2016 08:03

wet,
11 строка убивает массив

wet 04.08.2016 08:07

Цитата:

Сообщение от рони (Сообщение 424325)
wet,
11 строка убивает массив

Прописал так
answer.push({id : input});
Но все равно переменная id воспринимается как строка((
answer[id] = input;

А вот так вообще выкидывает undefined: [undefined, "text 1", "text 2", "text 3", "text 4"]

рони 04.08.2016 08:08

wet,
может вы хотели так
var answer = {};

$('.in').each(function(){
    var cur_el = $(this);
    var id = cur_el.attr('data-id');
    id = parseInt( id );
    var input = cur_el.val();
    answer[id] = input;

});

или так
var answer = [];

$('.in').each(function(){
    var cur_el = $(this);
    var id = cur_el.attr('data-id');
    id = parseInt( id );
    var input = cur_el.val();
    answer.push({id : input}) ;

});

рони 04.08.2016 08:09

Цитата:

Сообщение от wet
переменная id воспринимается как строка

а как иначе то? все ключи строки

wet 04.08.2016 08:30

Цитата:

Сообщение от рони (Сообщение 424327)
wet,
может вы хотели так
var answer = {};

$('.in').each(function(){
    var cur_el = $(this);
    var id = cur_el.attr('data-id');
    id = parseInt( id );
    var input = cur_el.val();
    answer[id] = input;

});

Огромное спасибо! Все дело было в кавычках var answer = {};


Часовой пояс GMT +3, время: 08:46.