繁体   English   中英

如何在函数内动态创建javascript对象

[英]how to create javascript object dynamically inside a function

我想在每次调用“dataObject”函数时动态创建一个 javascript 对象,所以我想做这样的事情:

let dataObject = {};

function appendDiv() {
    e = this.event.target;

    //this id changes each time when the function is called
    var current_id = e.id;

    // here I had to initialized it because if I didn't, it would appear an error "TypeError: dataObject[(intermediate value)] is undefined"
    dataObject[`${current_id}`] = {};

    $('#creates').submit(function (event) {
        var i, j;

        for (i = 0; i < nbr_group.value; i++) {
            inputlist = [];

            for (j = 0; j < 3; j++) {
                formChild = document.querySelectorAll('.period-select')[j].value;
                inputlist[j] = formChild;
            }

            dataObject[`${current_id}`][`${i}`] = {
                firstvalue: inputlist[0], 
                secondvalue: inputlist[1], 
                thirdvalue: inputlist[2]    
            }
        }
    });    
}

所以问题是当第一次调用该函数时,子对象将被成功创建,但对该函数的第二次调用会将它们创建为空,例如:

// the first call:
dataObject = {
    '1': {
         '1': { '1': 'some values' }, 
         '2': { '1': 'another value' }
    }
};

//the second call or third or... :
dataObject = {
    '1': {
        '1': { '1': 'some values' }, 
        '2': { '1': 'another value' }
    },
    '2': {}
};        

如果你想复制一个对象,不要使用dataObject[`${current_id}`][`${i}`] = {firstvalue: inputlist[0], secondvalue: inputlist[1], thirdvalue: inputlist[2]}; ,使用这个: let objectCopy = Object.assign({}, dataObject); 其中dataObject是您要复制的对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM