Как правильно настроить массив объектов для пользовательских данных - PullRequest
0 голосов
/ 03 августа 2011

Я настраиваю программу просмотра галереи, которая запускает каналы RSS в javascript, я пытаюсь снизить нагрузку на пользователя приложения до минимума. Существует отдельный файл javascript, который содержит все пользовательские данные отдельно от приложения, затем массив объектов расширяется объектом параметров по умолчанию, так что пользователю нужно только ввести, какие переменные они хотят изменить для каждой галереи, но новый объект должен быть создан для каждого, чтобы хотя бы ввести путь rss.

В настоящее время переменная по умолчанию выглядит примерно так:

var default = { id:'x', path:"", row:1, col:5 (etc)}

Я настроил скрипт customVars, чтобы пользовательские данные представляли собой массив объектов, который выглядит следующим образом

var customVars = [

    albumList = { 
    path :"http://",                            
    displayType : "list"            
    },

    album1 = {
    path :   "http://",                         
    rows : 1 ,  col : 6         
    }
];

РЕДАКТИРОВАТЬ (важно) - мне нужно иметь возможность эффективно обходить данные customVars, особенно когда я не знаю названия объектов альбома, которые они создают - другими словами, customVars [1 ] .rows должен иметь возможность вернуть 1

это правильный способ сделать это? я собираюсь столкнуться со странными ошибками в будущем, или есть лучший способ сделать это, может быть? Можно ли объявлять такие объекты внутри массива (я пытался избежать, чтобы пользователь объявлял переменные, а затем заставлял их самостоятельно настраивать массив

EDIT2

изменил его на массив объектов и добавил к идентификатору переменной в списке параметров, который пока работает нормально - все еще не уверен, смогу ли я объявить объекты таким образом, но мне нужно иметь возможность перебирать список объектов

var customVars = [
{   
    id  : 'album0',
    path    : "https://",                           
    rssType : "picasaAlbum" ,   displayType : "list"            
},
{
    id  : 'album1',
    path    :"https://",                            
    rows    : 1 ,   collumns : 5        
}
];

Ответы [ 3 ]

0 голосов
/ 03 августа 2011

Я думаю, что гораздо более удобочитаемой и поддерживаемой структурой было бы использование объекта вместо массива. Что-то вроде:

var customVars = {
      albumList : { path :"http://",
                    displayType : "list" 
                  },
      album1 :    { path : "http://",
                    rows : 1,
                    col : 6
                  }
};

Я никогда не видел синтаксис, который вы использовали для объявления переменных одновременно с включением их в массив. Я думаю, что это будет работать (я не могу быть обеспокоен, пытаясь это; я предполагаю, что вы уже сделали), так как каждый элемент массива все еще является выражением, но мне не нравится это, потому что я думаю, что это может сбить с толку во время будущего обслуживания, а также это создаст albumList и album1 как глобальные переменные. Я бы (почти) никогда не объявлял переменные без оператора var, даже когда я хочу, чтобы они были глобальными, потому что становится слишком легко вводить трудно обнаруживаемые ошибки.

0 голосов
/ 03 августа 2011

Почему бы не использовать фактический массив внутри вашего объекта?Если у вас есть список чего-либо, вы должны использовать массив, чтобы вы могли перебирать их.

var customVars = {
  albumList : { 
    path :"http://",
    displayType : "list",
    albums:[{
             name:"album1:,
             path : "http://",
             rows : 1,
             col : 6                   
            },
            {
             name:"album2:,
             path : "http://",
             rows : 1,
             col : 6                   
            }
    ]}   
};
0 голосов
/ 03 августа 2011

Вы не можете объявить abc = что-то внутри массива. Вы можете переписать это так:

var customVars = [
{
    albumList: { 
        path :"http://",                            
        displayType : "list"            
    },

    album1: {
        path :   "http://",                         
        rows : 1 ,  col : 6         
    }
},
{
    albumList: { 
        path :"http://",                            
        displayType : "list"            
    },

    album1: {
        path :   "http://",                         
        rows : 1 ,  col : 6         
    }
}]

;

Это правильное создание встроенного объекта JavaScript, даже если многие считают, что это json

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