dpe*_*tch 65 javascript arrays jquery push
我正在通过'checkbox'类型的几个输入元素循环.之后,我将值和检查属性添加到数组中.这是我的代码:
var stuff = {};
$('form input[type=checkbox]').each(function() {
stuff[$(this).attr('value')] = $(this).attr('checked');
});
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我只是想知道我是否可以使用Jquery中的.push()方法做同样的事情?
我尝试过这样的东西,但它不起作用:
stuff.push( {$(this).attr('value'):$(this).attr('checked')} );
Run Code Online (Sandbox Code Playgroud)
编辑:
我试图在Object上使用.push()方法,但.push()实际上只是Array Object的一种方法.
jon*_*ohn 127
它与jQuery无关.
你要定义一个文本对象与
// Object
var stuff = {};
Run Code Online (Sandbox Code Playgroud)
您可以像这样定义文字数组
// Array
var stuff = [];
Run Code Online (Sandbox Code Playgroud)
然后
stuff.push(element);
Run Code Online (Sandbox Code Playgroud)
实际上,数组stuff[index]
从其父对象继承了它们的括号语法.这就是为什么你能够像第一个例子中那样使用它的原因.
这通常用于动态访问属性的轻松反射
stuff = {}; // Object
stuff['prop'] = 'value'; // assign property of an
// Object via bracket syntax
stuff.prop === stuff['prop']; // true
Run Code Online (Sandbox Code Playgroud)
Sha*_*oli 13
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');
小智 13
所以这很容易)))
看这个...
var stuff = {};
$('input[type=checkbox]').each(function(i, e) {
stuff[i] = e.checked;
});
Run Code Online (Sandbox Code Playgroud)
你将拥有:
Object {0: true, 1: false, 2: false, 3: false}
Run Code Online (Sandbox Code Playgroud)
要么:
$('input[type=checkbox]').each(function(i, e) {
stuff['row'+i] = e.checked;
});
Run Code Online (Sandbox Code Playgroud)
你将会有:
Object {row0: true, row1: false, row2: false, row3: false}
Run Code Online (Sandbox Code Playgroud)
要么:
$('input[type=checkbox]').each(function(i, e) {
stuff[e.className+i] = e.checked;
});
Run Code Online (Sandbox Code Playgroud)
你将会有:
Object {checkbox0: true, checkbox1: false, checkbox2: false, checkbox3: false}
Run Code Online (Sandbox Code Playgroud)
这真的很简单:示例
//my object
var sendData = {field1:value1, field2:value2};
//add element
sendData['field3'] = value3;
Run Code Online (Sandbox Code Playgroud)
小智 5
另一种方法是:
stuff = Object.assign(stuff, {$(this).attr('value'):$(this).attr('checked')});
Run Code Online (Sandbox Code Playgroud)
在这里阅读更多:Object.assign()