如何将对象添加到数组jQuery
我正在尝试将我的对象添加到数组中,但在完成时,我拥有所有相同的对象如何将对象添加到数组jQuery,jquery,object,each,Jquery,Object,Each,我正在尝试将我的对象添加到数组中,但在完成时,我拥有所有相同的对象 $('#Create').click(function(event) { event.preventDefault(); var categoryId = $('#CatId').val(); var enteredDate = $('#datepicker').val(); var empId = $('#employeeID').text(); var systemDate = $.datepicker
$('#Create').click(function(event) {
event.preventDefault();
var categoryId = $('#CatId').val();
var enteredDate = $('#datepicker').val();
var empId = $('#employeeID').text();
var systemDate = $.datepicker.formatDate('dd.mm.yy', new Date());
var obj = {
CategoryId: categoryId,
EnteredDate: enteredDate,
SystemDate: systemDate,
EmpId: empId
};
var arrToServer = [];
var list = new Array();
$("input[type=checkbox]:checked").each(function() {
var productId = $(this).attr('id');
obj.ProductId = productId;
arrToServer.push(obj);
});
arrToServer = JSON.stringify(arrToServer);
}
我的arrToServer有两个相同的对象,为什么 创建对象的副本,然后设置项目id
$("input[type=checkbox]:checked").each(function () {
var productId = $(this).attr('id');
var clonedobj = jQuery.extend({}, obj); //create a shallow
clonedobj.ProductId = productId;
arrToServer.push(clonedobj);
});
我的arrToServer有两个相同的对象,为什么
因为您只在循环外部创建一个对象,并多次将同一对象推送到数组中。将对象传递给函数或将其分配给其他变量不会创建对象的副本
在循环内创建对象(使用循环,我指的是。每个回调)
下面是一个使用的示例,它比IMO更干净:
var arrToServer = $("input[type=checkbox]:checked").map(function() {
return {
CategoryId: categoryId,
EnteredDate: enteredDate,
SystemDate: systemDate,
EmpId: empId,
ProductId: $(this).attr('id')
};
}).get();
下面是一个可以让行为更清晰的小技巧:您能解释一下为什么在示例的末尾有一个.get()?.get
返回一个数组。如果没有它,您将使用jQuery对象。啊,谢谢。当我搜索时,我看到了这一点,它引用了Ajax:api.jquery.com/jquery.get。谢谢