2015-05-21 2 views
1

Вызов API, который я делаю, возвращает пустые объекты вместо null. Скучная это не нравится, поэтому, прежде чем я сохраняю ответ API Я очистки данных с помощью следующей функции:Как изменить значения свойств объекта при перечислении

var object_to_return = input_object; 

_.forOwn(object_to_return, function(key_value) { 
     if (_.isEmpty(key_value)) { 
      object_to_return[key_value] = null; 
     } 
    }); 

return object_to_return; 

Это не совсем правильно и мне очень интересно, если кто-нибудь знает, почему и как я могу это исправить. Меня особенно интересует, почему и если я должен потрудиться, даже вернув копию объекта (передается ли он по ссылке или ...?)

ответ

1

_.forOwn предоставляет ключ в функции обратного вызова; Поэтому, это сработало:

module.exports.convertEmptyObjectsToNull = function(target_object) { 
    _.forOwn(target_object, function(property, key) { 
     if (_.isEmpty(property)) { 
      target_object[key] = null; 
     } 
    }); 
} 

Кроме того, как уже упоминалось @apsillers, я не делал много с моими заданиями, так что этот метод просто мутирует объект ввода и не пытается клонировать его и вернуть копию.