Подтвердить что ты не робот

Добавление элементов к объекту с помощью метода .push()

Я делаю цикл через несколько элементов ввода типа 'checkbox'. После этого я добавляю значения и проверяет атрибуты на массив. Это мой код:

var stuff = {};
$('form input[type=checkbox]').each(function() {
    stuff[$(this).attr('value')] = $(this).attr('checked');
});

Это отлично работает, но мне просто интересно, могу ли я сделать то же самое с методом .push() в JQuery?

Я пробовал что-то вроде этого, но он не работает:

stuff.push( {$(this).attr('value'):$(this).attr('checked')} );

Edit:

Я пытался использовать метод .push() для Object, но .push() на самом деле является всего лишь методом объекта Array.

4b9b3361

Ответ 1

.push() - это метод Встроенный объект массива

Это никак не связано с jQuery.

Вы определяете литерал Object с

// Object
var stuff = {};

Вы можете определить литерал Массив, как этот

// Array
var stuff = [];

то

stuff.push(element);

Массивы фактически получают свой синтаксис привязки stuff[index], унаследованный от своего родителя, Object. Вот почему вы можете использовать его так, как вы в первом примере.

Это часто используется для легкого отражения для динамического доступа к свойствам

stuff = {}; // Object

stuff['prop'] = 'value'; // assign property of an 
                         // Object via bracket syntax

stuff.prop === stuff['prop']; // true

Ответ 2

stuff - это объект, а push - метод массива. Таким образом, вы не можете использовать stuff.push(..).

Предположим, вы определили stuff как массив stuff = []; , тогда вы можете вызвать метод push на нем.

Это работает, потому что объект [ключ/значение] хорошо сформирован.

stuff.push( {'name':$(this).attr('checked')} );

В то время как это не будет работать, потому что объект плохо сформирован.

stuff.push( {$(this).attr('value'):$(this).attr('checked')} );

Это работает, потому что мы рассматриваем stuff как ассоциативный массив и добавляем к нему значения

stuff[$(this).attr('value')] = $(this).attr('checked');

Ответ 3

так легко)))

Смотрите это...

    var stuff = {};
    $('input[type=checkbox]').each(function(i, e) {
        stuff[i] = e.checked;
    });

И у вас будет:

Object {0: true, 1: false, 2: false, 3: false}

Или:

$('input[type=checkbox]').each(function(i, e) {
    stuff['row'+i] = e.checked;
});

У вас будет:

Object {row0: true, row1: false, row2: false, row3: false}

Или:

$('input[type=checkbox]').each(function(i, e) {
    stuff[e.className+i] = e.checked;
});

У вас будет:

Object {checkbox0: true, checkbox1: false, checkbox2: false, checkbox3: false}

Ответ 4

Это очень просто: Пример

//my object
var sendData = {field1:value1, field2:value2};

//add element
sendData['field3'] = value3;