как сделать имя массива переменной в объекте - PullRequest
0 голосов
/ 06 июля 2011
    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 я хочу, чтобы массив i был автоматически увеличивающимся числом на основе .each.Но он продолжает называть это я.

Ответы [ 4 ]

4 голосов
/ 06 июля 2011
data2 = {};
data2[i] = {
    "id": id,
    "level": level,
    "name": name
};
1 голос
/ 06 июля 2011
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);
1 голос
/ 06 июля 2011

Может быть, вы должны сделать:

        data2[i] = [{
                "id": id,
                "level": level,
                "name": name
                }];
1 голос
/ 06 июля 2011

Имена свойств обрабатываются буквально в Javascript, независимо от того, существуют ли переменные с таким именем.

Однако вы переопределяете объект на каждой итерации цикла.Ваш код должен выглядеть примерно так:

data2[i] = {
    id: id,
    level: level,
    name: name
};

Обратите внимание, что я удалил литерал массива - [] вокруг литерала объекта.Я не могу себе представить, что вам это нужно, но вы всегда можете положить его обратно, если вы действительно сделали это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...