Сложные объекты, внутри коллекции / массивов. создать простой подход индексации ключей

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

поэтому, помимо данных, у меня есть объект, который является base / "myObject" для всех данных, с которыми я "общаюсь", он всегда будет иметь имя декларации, например, Name, я также намерен иметь его категории (это не мое изобретение, это то, что пространства имен в.net C#, где я чувствую себя более комфортно программирования)

так что это причина... некоторой установленной формы общих свойств / значений для всех данных программы.

проблема в том, что когда он находится в коллекции /seq / set /array, я хотел бы иметь возможность индексировать его (в c# я активно использую indexers и перечисляет) где я мог бы создать объект и получить доступ к его данным через ключ.

                      //pName        pVal (usually a data/json object could be anything)
var someRprop = Rprp("HomePhone" , { dtT: "string", dt: "0044-01...", cat "cusDat", division: "portal"; catId: 32}) 

function Rprp(parName, parVal) {
        var cretdprp = {
            pName:pPropName,
            pVal: pVal,
            pValAsint: parseInt(this.pVal)

        };
    return cretdprp;
}

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

так, например, в свойствах основного объекта любой программы, которую я создаю, у меня есть такая, как "типы данных":

//btw it has "nice" combination of Parentheses
function ProgMan(){
        var Core = { 
                     //          here is where it's get little complicated for my current level of javascript
                     DataTypes: [
                                 { 
                                  DateTime : Rprp("DateTime", {LenType :shortName, mxL: 35, isNumeric: false//... etc})
                                 }
                     ],
                     DataNcnsts: { I32 : "int", str: "string", Dt : "DateTime" },
                     HelmFactory : { }

     };
return Core;
}

Изменить добавленный контекст использования

   TabularsWHRM: function () {
                            var rtWH = {
                                            DTNDataTypes: function () {

                                                    var rtarr = new Array();
                                                    rtarr =[ Rprp("DateTime", {dateTime: this.DbLengts.pVal.vals.NameShort}),Rprp("int32", {Int32 : this.DbLengts.pVal.vals.NameShort }), Rprp("bool", { Boolean : this.DbLengts.pVal.vals.NameShort }), Rprp("objct", { Object: undefined }), Rprp("csvString", { CsvString: this.DbLengts.pVal.vals.csvString }), Rprp("string", { String: this.DbLengts.pVal.vals.string }), Rprp("Json", { Json: undefined }), Rprp("FileObj", { File: this.DbLengts.pVal.vals.NameShort })];
                                                    var tk = rtarr["DateTime"];
                                                    console.log("MyNamedkey >" + key.pName + " has Length value " + rtarr[key].pVal);
                                                    for (var key in rtarr) {

                                                        console.log("key " + key.pName + " has value " + rtarr[key].pVal.dateTime);
                                                        if (key == this.DTNDataTypes.dateTime) {
                                                    //dateTime: "DateTime", int32: "Int32", bool : "Boolean", objct: "Object",csvString: "CsvString", string : "String", Json: "Json", aFileObj: "File"}
                                                        }
                                                }
                                                return rtarr;
                                            },
                                            DbLengts: Rprp ("DbLengts",
                                            {
                                                vals : {
                                                                        NameShort: 25,
                                                                        Name: 50, NameLong: 150,
                                                                        PathIO: 450, ShortDesc: 150, Desc: 450,
                                                                        CommentsL1: 1000, CommentsL2: 2000, Text: 4000
                                                                        ,generate: function (pDTNDataTypes){
                                                                        var s = pDTNDataTypes;
                                                                        var rtIval = -1;
                                                                            switch (s) {
                                                                                case this.names.nameShort : rtIval = this.NameShort;
                                                                                case this.names.name: rtIval = this.Name;
                                                                                case this.names.nameLong: rtIval = this.NameLong;
                                                                                case this.names.pathIO: rtIval = this.PathIO;
                                                                                case this.names.shortDesc: rtIval = this.ShortDesc;
                                                                                case this.names.desc: rtIval = this.Desc;
                                                                                case this.names.commentsL1: rtIval = this.CommentsL1;
                                                                                case this.names.commentsL2: rtIval = this.CommentsL2;
                                                                                case this.names.text: rtIval = this.Text;

                                                                                default: rtIval = 800;
                                                                                break;

                                                                            }
                                                                          return  parseInt(rtIval);
                                                                        }

                                                        },
                                                names : 
                                                { 
                                                  nameShort : "NameShort", name : "Name", nameLong : "NameLong", pathIO : "PathIO", shortDesc : "ShortDesc", desc : "Desc", commentsL1 : "CommentsL1", commentsL2 : "CommentsL2", text : "Text"
                                                }
                                            })



                            };
                        return rtWH;
       },

0 ответов

Другие вопросы по тегам