通过. push()方法向对象添加项

我正在做一个循环通过几个输入元素的’复选框’类型。之后,我将向数组中添加值和选中的属性。这是我的暗号:

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 的一个方法。

443264 次浏览

0是一个对象,push是一个数组的方法

假设您将 stuff定义为一个数组 stuff = [];然后你可以调用它的 push方法。

这是因为对象[ key/value ]是格式良好的。

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

然而这不会起作用,因为对象的格式不正确。

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

这样做是有效的,因为我们将 ABc0视为一个关联数组,并为其增加了价值

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

.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}

这真的很简单: 例子

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


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

另一种方法是:

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

阅读更多: Object.sign ()

今天,你可以使用解构为你制造这些东西!

Https://developer.mozilla.org/pt-br/docs/web/javascript/reference/operators/destructuring_assignment

解构对于数组和对象也同样适用:

let stuff = {
text: "value"
}
// create some other value
const anotherVariable = 10
stuff = {
...stuff,
anotherVariable
}


console.log(stuff)

输出将是: {text: "value", anotherVariable: 10}