2

これが返されるのはなぜですか:tracker.paramsToTrackは未定義です

var tracker = {};
var paramsToTrack = ['a', 'b', 'c', 'd', 'e'];
for (p in paramsToTrack)
{
    if(params[paramsToTrack[p]])
    {
        tracker.paramsToTrack[p] = params[paramsToTrack[p]];
    }

}
console.log(tracker);

私は基本的に「a」から「e」が存在するかどうかパラメータをチェックしています。その場合は、次のようにトラッカーオブジェクトに追加します。

tracker.a=スタッフ

tracker.b=スタッフ

私がここで間違っていることについての考えは?

4

1 に答える 1

3
tracker.paramsToTrack[p]

おそらく

tracker[paramsToTrack[p]]

また、あなたが尋ねたことではなく、冗長な配列ルックアップを排除したい場合があります。

var tracker = {};
var paramsToTrack = ['a', 'b', 'c', 'd', 'e'];
var paramName;
for (p in paramsToTrack)
{
    paramName = paramsToTrack[p];
    if(params[paramName])
    {
        tracker[paramName] = params[paramName];
    }

}
console.log(tracker);

または、最新のJavascript環境で作業している場合は、次のようになります。

paramsToTrack.forEach(function (paramName) {
    if(params[paramName])
    {
        tracker[paramName] = params[paramName];
    }
});
于 2010-12-13T19:07:42.847 に答える