Помогите добавить новое свойство в литерал объекта
Почему это возвращается: 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];
}
});