Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将对象添加到数组jQuery_Jquery_Object_Each - Fatal编程技术网

如何将对象添加到数组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。谢谢