为什么会回归: 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',我基本上会检查params。如果是这样,请将它们添加到跟踪器对象,如下所示:
tracker.a = stuff
tracker.b = stuff
关于我在这里做错了什么的想法?
答案 0 :(得分: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];
}
});