我正在尝试将由会场ID变量存储的字符串添加到名为“ stop”的对象中。停止对象存储在称为场所的对象中。由于某种原因,如果场所对象中尚不存在特定的停靠点,则当我将该停靠点添加到场所对象并将其设置为与另一个具有属性场所标识的对象相等时,会场添加为字符串“ venueID”而不是存储在可变会场ID中的值。为什么是这样?

var getMostPopularVenues = function(checkins) {
    var venues = {};
    for (var i = 0; i < checkins.length; i++) {
        var checkin = checkins[i];
        var venue = {'venueName' : checkin['venueName'], 'count' : 1};
        var stop = checkin['stop'];
        var venueID = checkin['venueID'];
        if (stop in venues) {
            if (venueID in venues[stop]) {
                venues[stop][venueID]['count']++;
            }
            else {
                venues[stop][venueID] = venue;
            }
        }
        else {
            console.log(venueID); // correctly prints the actual venueID that I want to set as the property
            venues[stop] = {venueID : venue}; // this line gives the stop a property called the string 'venueID' instead of the value stored by the variable venueID
    }
}

最佳答案

对象文字{venueID : venue}{"venueID" : venue}相同。

对象文字不能用于设置动态属性名称,这必须分为两部分。

例如,

venues[stop] = {};
venues[stop][venueID] = venue;

09-13 07:11