Javascript 在更新属性值时更新数组的值

Javascript 在更新属性值时更新数组的值,javascript,jquery,Javascript,Jquery,我在JS文件中有以下代码 var listOfCountries = []; var Country = {}; Country = { "CountryCode": null, "SerialNo": 0, "FrzInd": false } for (var i=0; i < $('#ulCustomCountryList li').length; i++) { Country.CountryCode = $("#countryCode_"

我在JS文件中有以下代码

    var listOfCountries = [];
    var Country = {};
    Country = { "CountryCode": null, "SerialNo": 0, "FrzInd": false }

    for (var i=0; i < $('#ulCustomCountryList li').length; i++) {
      Country.CountryCode = $("#countryCode_" + i).val();
      Country.SerialNo = $("#serialNo_" + i).val();
      listOfCountries.push(Country);
    }
var-listOfCountries=[];
var Country={};
Country={“CountryCode”:null,“SerialNo”:0,“FrzInd”:false}
对于(var i=0;i<$('ulCustomCountryList li')。长度;i++){
Country.CountryCode=$(“#CountryCode_”+i).val();
Country.SerialNo=$(“#SerialNo"+i).val();
国家列表。推动(国家);
}

在第一次迭代中:当countryCode\u 0为“IND”时,则
国家列表[0]。countryCode=“IND”
,在第二次迭代中,当countryCode\u 1为“AUS”时,则
国家列表[1]。countryCode=“AUS”
但它也会更新国家列表[0]的值。countryCode为
国家列表[0]。countryCode=“AUS”

因为对象是参考。将更新对对象的所有引用。 每次迭代都推送相同的对象,因此有两种方法来修复它

1-在每次迭代中创建新对象 详情如下:

  var countriesCount = $('#ulCustomCountryList li').length; //- 1
  listOfCountries =[];
  for (var i = 0; i < countriesCount; i++) {

    var Country = { "CountryCode": null, "SerialNo": 0, "FrzInd": false }
    Country.CountryCode = $("#countryCode_" + i).val();
    Country.SerialNo = $("#serialNo_" + i).val();
    listOfCountries.push(Country);

  }

在每次迭代中创建一个新对象。此时,您总是更新相同的
Country
object.put
var Country={};Country={“CountryCode”:null,“SerialNo”:0,“FrzInd”:false}
循环中的这两行,以便它可以在每次迭代中获取新对象。这与您在另一个代码中的循环中获取空对象不同。:)
     var countriesCount = $('#ulCustomCountryList li').length; //- 1
       var listOfCountries = [];
        var Country = {};
        Country = { "CountryCode": null, "SerialNo": 0, "FrzInd": false }

        for (var i=0; i < countriesCount; i++) {
          var copy = Object.assign({}, Country);
          copy.CountryCode = $("#countryCode_" + i).val();
          copy.SerialNo = $("#serialNo_" + i).val();
          listOfCountries.push(copy);
        }