Помогите добавить новое свойство в литерал объекта

Почему это возвращается: 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 = материал

Мысли о том, что я здесь делаю не так?

1 ответ

Решение
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];
    }
});
Другие вопросы по тегам