Javascript 使用变量推送json
我想使用变量将一些数据推送到预定义的JSON变量中。 以下是我预定义的JSON变量:Javascript 使用变量推送json,javascript,json,vue.js,Javascript,Json,Vue.js,我想使用变量将一些数据推送到预定义的JSON变量中。 以下是我预定义的JSON变量: data(){ return { dataMON: [], dataTUE: [], dataWED: [], dataTHU: [], dataFRI: [] } } 这就是我想推动的东西: getTimeTable() {
data(){
return {
dataMON: [],
dataTUE: [],
dataWED: [],
dataTHU: [],
dataFRI: []
}
}
这就是我想推动的东西:
getTimeTable() {
var db = firebase.firestore();
var date = new Date();
var weekday = new Array(5);
weekday[0] = "monday";
weekday[1] = "tuesday";
weekday[2] = "wednesday";
weekday[3] = "thursday";
weekday[4] = "friday";
weekday.forEach(day => {
var dayLowerCase = day.slice(0, 3);
var dayUpperCase = dayLowerCase.toUpperCase();
var tmpTable = {
period: doc.id,
course: fullTempTable.fach,
teacher: fullTempTable.lehrer,
room: fullTempTable.raum
};
this.day.[dayUpperCase].push(tmpTable);
});
}
问题是我不能使用day[dayUpperCase],因为那样会试图找到对象dayUpperCase。在这种情况下,您甚至可以使用变量吗?您必须在字符串中构造整个属性名
var dayUpperCase = dayLowerCase.toUpperCase();
var propertyName = "day" + dayUpperCase;
然后,您可以使用括号表示法访问它(前面不使用
):
最好创建另一个对象:
data() {
return {
day: {
MON: [],
TUE: [],
WED: [],
THU: [],
FRI: []
}
};
}
从长远来看,这比添加字符串更干净,因为它将使数据
对象保持有序。当您只需要创建另一个对象时,必须添加字符串来创建属性名称有点像一个“”。例如,如果未来的开发人员看到了数据
对象,他们可能会对“dataMON”执行ctrl-f
以查看访问/设置它的位置,但由于属性是构造的,所以这不起作用。类似地,许多IDE将允许您“找到给定属性的所有用法”;由于动态特性,这也不起作用。使用单独的对象可以让其他开发人员更容易地找到修改/访问.day
对象的地方
然后您可以编写(请注意,使用[]
时,我们不需要
):
.是的,我想那也行。但是@Quentins的解决方案更适合我的情况。无论如何,谢谢。(更新的答案)我不知道你的项目的细节,但是当你应该创建另一个对象时,必须添加字符串来创建属性名是一种“代码气味”。根据您展示的代码,这个解决方案可能会被认为是更好的实践。但不用担心,只要对你最有效:)
data() {
return {
day: {
MON: [],
TUE: [],
WED: [],
THU: [],
FRI: []
}
};
}
this.day[dayUpperCase].push(tmpTable);