Javascript 集合/数组中的复杂对象。创建一个简单的键索引方法
我已经创建了一个自定义对象,它的任务是提供有关它所持有的数据的更多信息 因此,除了数据,我还有一个对象,它是我“处理”的所有数据的基/“myObject”,它总是带有声明名称,例如名称,我还打算将它本身分类(这不是我的发明,这是.net c中名称空间的一种形式,我觉得在这里编程更舒服) 这就是原因,…所有处理的程序数据的公共属性/值的某种既定形式 问题是当它位于集合/序列/集合/数组中时 我希望能够对它进行索引(在Javascript 集合/数组中的复杂对象。创建一个简单的键索引方法,javascript,arrays,oop,collections,data-management,Javascript,Arrays,Oop,Collections,Data Management,我已经创建了一个自定义对象,它的任务是提供有关它所持有的数据的更多信息 因此,除了数据,我还有一个对象,它是我“处理”的所有数据的基/“myObject”,它总是带有声明名称,例如名称,我还打算将它本身分类(这不是我的发明,这是.net c中名称空间的一种形式,我觉得在这里编程更舒服) 这就是原因,…所有处理的程序数据的公共属性/值的某种既定形式 问题是当它位于集合/序列/集合/数组中时 我希望能够对它进行索引(在c#中,我大量使用indexers和enum) 在那里我可以创建一个对象并通过它的
c#
中,我大量使用indexer
s和enum)
在那里我可以创建一个对象并通过它的一个键访问它的数据
//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;
}
现在,如果我需要创建一个按键索引的集合,我无法理解如何创建一个匹配的集合对象,以便能够通过属性名访问它
例如,在我创建的任何程序的主对象属性中,我都有一个,比如“数据类型”:
编辑添加了使用上下文
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;
},
我不太清楚您到底需要什么,但是JavaScript内置的
Set
类不能满足您的需求有什么原因吗?听起来你只需要一个简单的键值对集合?@JCD你考虑过Rprp(parName,parVal)
,函数如ToInt()
,我的自定义对象是集合中的元素吗?我不明白这个问题,抱歉。@JCD我会添加我的try,这样会更容易,请尝试帮助。thanks@JCD我想现在更容易看到它所在的上下文,我试图通过它的名称访问元素,但是元素是Rprop
而不是基本的js{}
我对这里需要什么有点模糊,但是JavaScript内置的Set
类不能满足您的需求有什么原因吗?听起来你只需要一个简单的键值对集合?@JCD你考虑过Rprp(parName,parVal)
,函数如ToInt()
,我的自定义对象是集合中的元素吗?我不明白这个问题,抱歉。@JCD我会添加我的try,这样会更容易,请尝试帮助。thanks@JCD我想现在更容易看到它所在的上下文,我试图通过它的名称访问元素,但元素是Rprop
而不是基本的js{}
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;
},