是否可以定义一个包含对象的对象
Is it possible to define an object containing objects?
我有这个对象:
var a = {
"1":{"topicId":1,
"subTopicId":1,
"topicName":"x",
"subTopicName":"x"},
"2":{"topicId":1,
"subTopicId":2,
"topicName":"x",
"subTopicName":"x"},
"62":{"topicId":10,
"subTopicId":62,
"topicName":"x",
"subTopicName":"x"}
}
我意识到可以这样定义内部对象:
interface IData {
topicId: number;
subTopicId: number;
topicName: string;
subTopicName; string;
}
但是,有没有一种方法可以定义整个对象,可以有任意数量的IData对象?
在这种情况下,JSON包含"stringId" (例如:"1", "2")作为标识符,我们可以将该对象定义为字典(见这里):
interface IData
{
topicId: number;
subTopicId: number;
topicName: string;
subTopicName; string;
}
// IDictionary with a key of type string
// and a value of type IData
interface IDataSet
{
[key: string] : IData;
}
var source =
'{ "1":{"topicId":1, "subTopicId":1, "topicName":"x","subTopicName":"x"},'+
' "2":{"topicId":1, "subTopicId":2, "topicName":"x","subTopicName":"x"},'+
' "62":{"topicId":10,"subTopicId":62,"topicName":"x","subTopicName":"x"}'+
'}';
var a = <IDataSet>JSON.parse(source);
for(var key in a)
{
var elm = document.createElement('div');
elm.innerText = "key: " + key + ", topicId: " + a[key].topicId
document.body.appendChild(elm);
}
检查这里的代码(点击运行,查看结果)
哎呀,忽略了typescript
标签…请参阅通过解析JSON(可以由服务器输出,从配置文件读取等)解析JSON的替代答案。下面是如何在纯javascript中做到这一点:
在对象中使用数组属性
然后将每个数组元素设置为IData对象的实例。
var a = { Topics: [] }; // define container with empty Topics array
// add some topics
a.Topics[1] = { topicId: 1, subTopicId: 1, topicName: "x", subTopicName: "x" };
a.Topics[2] = { topicId: 1, subTopicId: 2, topicName: "x", subTopicName: "x" };
a.Topics[62] = { topicId: 10, subTopicId: 62, topicName: "x", subTopicName: "x" };
然后像这样访问对象:
alert(a.Topics[1].topicName + " - " + a.Topics[1].subTopicName);
相关文章:
- 节点导出返回一个空对象
- 我可以在json对象中添加一个函数吗
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 为什么要包装每一个原型“;类“;JS中具有匿名函数的对象
- 要求定义另一个文件中的对象
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- AngularJS&JSON-从Previous&下一个对象
- jQuery$.inArray()总是返回-1和一个对象数组
- 在创建对象后附加一个jquery事件
- javascript处理一个对象数组以获得一个新的对象数组
- javascript函数,它接受两个输入:一个对象和一个键,并返回对象中该键的相应值
- 你能用来自数组的属性名称生成一个对象吗
- 是不是;t一个原型对象一个实例
- 有没有一种方法可以在不修改Object.prototype的情况下给所有对象一个方法?
- 给svg对象一个描边
- 你能用javascript给一个对象一个键吗
- JavaScript使对象一个全局窗口对象?(无冲突功能)