帮助向对象文字添加新属性

时间:2010-12-13 19:05:18

标签: javascript json object-literal

为什么会回归: 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

关于我在这里做错了什么的想法?

1 个答案:

答案 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];
    }
});