Javascript 对象数组被最后一个对象覆盖

Javascript 对象数组被最后一个对象覆盖,javascript,jquery,Javascript,Jquery,我已加载此对象数组: $(document).ready(function () { $("<div></div>").load("/Stats/Contents #stats", function () { statcount = $(".list-group-item", this).length; for (var j = 0; j < statcount; j++) { statList.push(stat); }

我已加载此对象数组:

$(document).ready(function () {
  $("<div></div>").load("/Stats/Contents #stats", function () {
    statcount = $(".list-group-item", this).length;

    for (var j = 0; j < statcount; j++) {
      statList.push(stat);
    }

    for (var i = 0; i < statcount; i++) {
      statList[i].statId = document.getElementById("statId-" + (i + 1) + "").value;
      statList[i].productDescription = document.getElementById("productType-" + (i + 1) + "").value;
      statList[i].lastMeasuredInventoryAmount = document.getElementById("statLastMeasureAmount-" + (i + 1) + "").value;
    }
  )}
)}
$(文档).ready(函数(){
$(“”)。加载(“/Stats/Contents#Stats”,函数(){
statcount=$(“.list group item”,this).length;
对于(var j=0;j
。。。。等等 然后,我得到更改后的值并保存它们,但是,在ajax post调用中,所有数组对象都是相同的(最后分配的一个),看起来它们被覆盖了。 有什么想法吗?我看到了这些延迟/承诺类型的代码,但不确定是否有更简单的方法。
谢谢。

听起来像是您获取了statList阵列,然后将其推送到服务器,并进行了相应的更改。您是否想过切换列表,从标记中获取结果并在保存点构建数组,而不是像这样构建和维护列表

$("btnSave").on("click", function(e) {
   var data = [];
   $(".list-group-item").each(function() {
     data.push({
       statId: $(this).find(".statid").val(),
       .
       .
     })
   });

您不需要给每个元素一个ID(但可以),因为我的示例使用CSS类在当前列表项中查找元素。此外,如果这些是输入,您可以更有效地从根元素序列化它们…

思洛存储器来自何处?这是完整的代码吗?您正在向我们展示一个函数,它获取一些结构未知的数据,并应用于一些标记(也未知)。如果不知道这两个,你的问题就没有意义了。如果没有HTML,很难说,但我猜你所有的
statId-
productType-
statlastmasureamount-
DOM元素都有完全相同的ID,这将解释为什么JS总是选择最后一个。抱歉,Naren-更正,应该是这样的“statList.push(stat);“stat是包含数据的对象。@masterfloda-不,它们没有相同的id,它们是动态元素,具有类似statId-1、statId-2等id,当我调试javascript时,它会通过for循环,正确地获取所有值并将其推送到数组中。但是,稍后会被覆盖,我无法找到如何覆盖。嗨,Bri”安-是的,我可以这样做-但是,要求是我将原始数据和编辑后的数据一起发送回帖子。这就是为什么我需要捕获原始数据并将其保留在第一次加载时。此外,ID是动态生成的,如statid-1、statid-2-因此需要动态数组和推送。它们来自数据库,但有些是编辑的能够的