我试图找出构建我的javascript对象的最佳方法。我想要的是一个对象,我可以通过与此类似的结构中的键选择嵌套对象:
trackObject:
[{
row1:{rowId:"#row1",rowSample:
{sampleId:"#1",notes:
[0,400,800]
}
},
row2:{rowId:"#row2",rowSample:
{sampleId:"#2",notes:
[0,400,800]
}
},
}]
理想情况下,我希望能够通过在'行上编制索引来修改此对象。等级row1
或row2
。问题是使行名称成为变量。即上面的对象将通过调用trackObject.row1
返回我需要的对象,但由于row1
部分需要是动态的,我不确定如何动态地从这一点索引它。
我尝试了一些变体,比如不使trackObject
成为数组而是将对象改为对象并将row1更改为"row1":{rowId...
但是我已经能够引用对象属性了嵌套({rowId...
)
我以前用JSON中的密钥设置了对象,并且按密钥进行了很好的索引,但由于某种原因,我在js中挣扎......
答案 0 :(得分:2)
您可以使用括号表示法访问对象的成员。
var obj = {
row1: {
rowId: '#row1'
},
row2: {
rowId: '#row2'
}
};
// index stored in variable
var index = 'row1';
// get row by using bracket notation
var row = obj[index];
console.log(row.rowId); // '#row1';
答案 1 :(得分:0)
构建javascript对象的便捷方式。
考虑使用接受 行的自定义 getter 方法索引/数字作为参数:
var data = {
trackObject :
{
row1: {
rowId: "#row1",
rowSample: {
sampleId: "#1",
notes: [0,400,800]
}
},
row2: {
rowId: "#row2",
rowSample: {
sampleId: "#2",
notes: [0,400,800]
}
},
},
getRow : function (idx) {
var obj = this.trackObject['row' + idx];
if (!obj) {
throw new Error("Undefined trackObject key: row" + idx);
}
return obj;
}
};
console.log(data.getRow(2).rowSample);
console.log(data.getRow(5).rowSample); // will throw "Uncaught Error: Undefined trackObject key: row5"