JavaScript使用String作为对象键的参数

时间:2015-01-08 21:58:12

标签: javascript string object key

我遇到以下问题,几个小时后才找到解决方案。

我有一个JSON对象旅行。 mongoose-schema看起来像这样:

var TripSchema = new Schema({
userId: String,
tripToken: String,
busId: Number,
lineId: Number,
tracking: [
    {
        vehicleCurrentStopCode: String,
        vehicleTrackingList: [
            {
                vehicleLatitude: Number,
                vehicleLongitude: Number,
                vehicleUpdateTimestamp: Number,
                vehicleUpdateId: Number
            }
        ],
        userTrackingList: [
            {
                userLatitude: Number,
                userLongitude: Number,
                userUpdateTimestamp: Number,
                vehicleUpdateId: Number
            }
        ]
    }
]
});

现在在我的数据库处理程序模块中,我编写了一个函数,需要由trackingList识别,即如果我想更新 vehicleTrackingList userTrackingList

因此我尝试了以下内容:

switch (trackingList.vehicleLatitude) {
case ('number') :
    pushElementInCorrectTrackingList(trip, "vehicleTrackingList", index, trackingList);
    break;
case ('undefined') :
    pushElementInCorrectTrackingList(trip, "userTrackingList", index, trackingList);
    break;
}

使用功能:

var pushElementInCorrectTrackingList = function (trip, typeOfTrackingList, index, trackingList) {

trip.tracking[index].typeOfTrackingList.push(trackingList);
...
}

这是行不通的,因为js等待在trip.tracking [index]之后没有收到字符串。

但是我没有找到任何将String转换为对象键的函数。起初我认为以下内容可以解决问题但是,我抓住了错误: TypeError:无法调用方法' push'未定义的

var pushElementInCorrectTrackingList = function (trip, typeOfTrackingList, index, newElement) {
var param = typeOfTrackingList.valueOf();
trip.tracking[index].param.push(newElement);
...
}

有人有解决方案吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

你有没有试过这个?

var pushElementInCorrectTrackingList = function (trip, typeOfTrackingList, index, trackingList) {
trip.tracking[index][typeOfTrackingList].push(trackingList);
    ...
}