自在猫先生 2022-09-05 09:35 采纳率: 62.9%
浏览 56
已结题

JavaScript 值类型数据重复覆盖数据问题

问题遇到的现象和发生背景

当我查询出来的数据 有三个对象,这三个对象的数据 我想要放到一个json字符串里面,现在问题是我只能取到最后一次的数据。会覆盖数据。

问题相关代码,请勿粘贴截图
function sendData(){
    $("#lev_id table tr").each(function () {
        var chk=$(this).find("td input[type='checkbox']")[0];
        var REQUEST = {}, head = {}, data = {}, req = {}, item_list = {}, items_list = {}, main = {}, item = {};
        var item = []; var items = [];
        //// Head
        head.ACCOUNT = "ESB_TEST_MES",
        head.PASSWORD = "mestest@esb",
        head.CONSUMER = "SAP";
        head.COUNT = "1";
        var TRID = $(this).find("td").eq(12).text();
        var strbu = TRID.substring(14, TRID.lastIndexOf('_') + 1);
        var RadNum = Math.floor(Math.random() * 10000);
        var index = "BAW_MES_E123_" + strbu+RadNum;
        head.TRANSACTIONID = index;
        head.SRVLEVEL="1";
        head.COMPANY = "BAW";
        //读取选中行的数据
        if(chk!=undefined && chk.checked){
           

            if ($(this).find("td").eq(11).text() == "已回传")
            {
                alert("请选择未回传数据进行回传!");
                return;
            }

            if ($(this).find("td").eq(9).text() == "" || $(this).find("td").eq(9).text() == null || $(this).find("td").eq(10).text()=="" || $(this).find("td").eq(10).text()==null) {
                alert("VIN码和变更时间必须填写!");
                return;
            }

            var param = getSearchParams();
            for (var i = 0; i <param.length; i++) {
                //item
                var ZYL02 = param[i].ZYL02;
                var ZYL01 = param[i].ZYL01;
                var ZID = param[i].ZID;
                var DATUV = "20220419";
                var WERKS = param[i].WERKS;
                var AETXT = param[i].AETXT;
                var AENNR = param[i].AENNR;
                //items
                var ZWYBS = param[i].ZWYBS;
                var ZMESVIN = param[i].ZMESVIN;
                var ZMESDATE = param[i].ZMESDATE;
                var IDNRK = param[i].IDNRK;
                var ZYL04 = param[i].ZYL04;
                var SORTF = "X";
                var ZYL06 = param[i].ZYL06;
                var ZCZZT = param[i].ZCZZT;
                var AUSCH = "";
                var ZYL05 = param[i].ZYL05;
                var ZYL03 = param[i].ZYL03;
                var MATNR = param[i].MATNR;
                // Items 
                item_list.ZYL02 = ZYL02;
                item_list.ZYL01 = ZYL01;
                item_list.ZID = ZID;
                item_list.DATUV = DATUV;
                item_list.WERKS = WERKS;
                item_list.AETXT = AETXT;
                item_list.AENNR = AENNR;
                item_list.ZYL03 = ZYL03;
                item_list.MATNR = MATNR;
                //item_list.ITEM = items_list;
                items_list.ZWYBS = ZWYBS;
                items_list.ZMESVIN = ZMESVIN;
                items_list.ZMESDATE = ZMESDATE;
                items_list.IDNRK = IDNRK;
                items_list.ZYL04 = ZYL04;
                items_list.SORTF = SORTF;
                items_list.ZYL06 = ZYL06;
                items_list.ZCZZT = ZCZZT;
                items_list.AUSCH = AUSCH;
                items_list.ZYL05 = ZYL05;
                //创建最外层响应头
                req.REQUEST = {};
                //赋值
                data.HEAD = head;
                data.DATA = REQUEST;
                REQUEST.ITEM = item;
                main.ITEMS = items;
                req.REQUEST = data;
               
            }
            //追加
           
            item_list.ITEMS = items;
            item.push(item_list);
            items.push(items_list);
            var JsonData = JSON.stringify(req);
  });
}

这是我得到的json格式数据:

{
    "REQUEST": {
        "HEAD": {
            "ACCOUNT": "ESB_TEST_MES", 
            "PASSWORD": "mestest@esb", 
            "CONSUMER": "SAP", 
            "COUNT": "1", 
            "TRANSACTIONID": "BAW_MES_E123_20220419193456191_1661", 
            "SRVLEVEL": "1", 
            "COMPANY": "BAW"
        }, 
        "DATA": {
            "ITEM": [
                {
                    "ZYL02": "1", 
                    "ZYL01": "", 
                    "ZID": "12345671", 
                    "DATUV": "20220419", 
                    "WERKS": "1081", 
                    "AETXT": "行项目新增", 
                    "AENNR": "000000001000", 
                    "ZYL03": "1", 
                    "MATNR": "CP12", 
                    "ITEMS": [
                        {
                            "ZWYBS": "123", 
                            "ZMESVIN": "SVU20220711LEDHEE", 
                            "ZMESDATE": "2022-08-11", 
                            "IDNRK": "NN11", 
                            "ZYL04": "1", 
                            "SORTF": "X", 
                            "ZYL06": "1", 
                            "ZCZZT": "I", 
                            "AUSCH": "", 
                            "ZYL05": "1"
                        }
                    ]
                }
            ]
        }
    }
}

运行结果及报错内容

每次push进去的数据都是最后一一个对象的数据,无法把3个对象的数据都push进去。

我的解答思路和尝试过的方法

网上有在push前创建空对象 或者清空数据,试过了达不到想要的效果,会把我的json格式打乱。
我声明只能用 var 这样的类型。

我想要达到的结果

三个对象都push 并且不会打乱我的json格式数据。

  • 写回答

4条回答 默认 最新

  • 飞鱼爱吃米 2022-09-05 10:38
    关注

    作用域的问题
    第34行: for (var i = 0; i <param.length; i++) 换成 for (let i = 0; i <param.length; i++) ,试一下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 9月14日
  • 已采纳回答 9月6日
  • 创建了问题 9月5日

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)