Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.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
Javascript 如何使数组名成为对象中的变量_Javascript_Jquery_Json - Fatal编程技术网

Javascript 如何使数组名成为对象中的变量

Javascript 如何使数组名成为对象中的变量,javascript,jquery,json,Javascript,Jquery,Json,在对象数据2中,我希望数组i是一个基于.each的自动递增数字。但它一直将其命名为i。属性名在Javascript中按字面意思处理,不管是否有任何具有该名称的变量 var data = {}; $('.content').each(function(i){ var id = $(this).attr('id'), level = $(this).attr('level'), name = $(this).find('

在对象数据2中,我希望数组i是一个基于.each的自动递增数字。但它一直将其命名为i。

属性名在Javascript中按字面意思处理,不管是否有任何具有该名称的变量

    var data = {};
    $('.content').each(function(i){
        var id = $(this).attr('id'),
            level = $(this).attr('level'),
            name = $(this).find('textarea').val(),
            data2 = {
                i:[
                    {
                    "id": id,
                    "level": level,
                    "name": name
                    }
                ]
            };
            $.extend(data, data2);
    });
但是,在循环的每次迭代中都会重新定义对象。您的代码可能如下所示:

data2 = {};
data2[i] = {
    "id": id,
    "level": level,
    "name": name
};
注意,我已经删除了数组文字-对象文字周围的[]。我无法想象你需要它,但如果你真的需要,你可以随时把它放回去。

也许你应该这样做:

data2[i] = {
    id: id,
    level: level,
    name: name
};
        data2[i] = [{
                "id": id,
                "level": level,
                "name": name
                }];
var data = {};
$('.content').each(function(i) {
    var id = $(this).attr('id'),
        level = $(this).attr('level'),
        name = $(this).find('textarea').val(),
        data2 = {};
    data2[i] = [{
        "id": id,
        "level": level,
        "name": name}];
};                   
$.extend(data, data2);