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 回答