繁体   English   中英

通过.push()方法将对象添加到对象

[英]Adding items to an object through the .push() method

我正在通过'checkbox'类型的几个输入元素循环。 之后,我将值和检查属性添加到数组中。 这是我的代码:

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

这工作正常,但我只是想知道我是否可以使用Jquery中的.push()方法做同样的事情?

我尝试过这样的东西,但它不起作用:

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

编辑:

我试图在Object上使用.push()方法,但.push()实际上只是Array Object的一种方法。

.push()内置数组对象的一种方法

它与jQuery无关。

您正在定义一个文字对象

// Object
var stuff = {};

您可以像这样定义文字数组

// Array
var stuff = [];

然后

stuff.push(element);

数组实际上从它们的父对象继承了它们的括号语法stuff[index] 这就是为什么你能够像第一个例子中那样使用它的原因。

这通常用于动态访问属性的轻松反射

stuff = {}; // Object

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

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

所以这很容易)))

看这个...

    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}

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');

另一种方法是:

stuff = Object.assign(stuff, {$(this).attr('value'):$(this).attr('checked')});

在这里阅读更多: Object.assign()

这很简单:例子

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM