У меня есть массив объектов. Свойства ссылки на объекты, которые необходимо изучить. Однако свойства являются необязательными и могут не передаваться. Это приводит к ошибке.свойства ссылок, которые еще не определены
Вот значительно упрощенная версия коды:
var build = {
execute: function (type, data) {
switch (type) {
case "fullName":
return build.fullName(data);
}
},
fullName: function(data){
return data[0] + data[1]
}
};
// assume this is the actual inbound data after parsing
var sample_event = {
customer: {
firstName: "bob",
lastName: "smith",
email: "[email protected]"
}
};
function cleanStuff(event) {
// potential inbound data
var prospects = [
{parent: "customer", type: build.fullName, newField: 'fullName',data: [event.customer.firstName, event.customer.middleName, event.customer.lastName]},
{parent: "customer", type: build.fullName, newField:'fullName', data: [event.idontexist.firstName, event.seller.middleName, event.seller.lastName]}
];
function calc(type, newField, calculationData) {
var calculated = calculated || {};
return calculated[newField] = build.execute(type, calculationData);
}
var filteredList = prospects.filter(function (x) {
if (event[x.parent] !== undefined) {
return x
}
});
filteredList.forEach(function (item) {
var type = item.type,
fieldName = item.fieldName,
data = item.data;
calc(type, fieldName, data, event);
});
}
cleanStuff(sample_event);
Как можно идти о ссылках свойства, которые не существуют? Я НЕ хочу создавать пустые свойства или устанавливать их в null. Я хочу просто избежать очистки их, если они не были отправлены в приложение.
Я мог бы создать элементы в виде строк и проанализировать их обратно на пути к свойствам во время использования, но я думаю, что это плохой подход.
Я также рассматривал возможность создания прокси-сервера с использованием ES6, но Chrome имеет обновление с последней спецификацией.
Я использую массив «перспективы» в качестве таблицы поиска, чтобы сказать: «Эй, если это значение отправлено, сделайте X для него».
Почему вы ссылаетесь на значения, которые еще не существуют? Для меня это звучит как проблема с вашим дизайном. –
Я получаю входящую почту JSON, содержащую кучу дополнительных данных. В этом массиве «перспективы» перечислены все значения, которые могут потребовать некоторой нормализации/очистки. Существует метод «нормализации» в другом месте, который принимает входящие данные, проверяет этот массив «перспективы» и выполняет «тип» нормализации относительно соответствующих «данных». Я открыт для любых предложений по лучшему дизайну или шаблонам. – Cyph
Так почему же часть кода пытается получить доступ к объектам, выполняющимся до того, как данные существуют? Не могли бы вы показать, как вы делаете такой доступ, чтобы иметь [mcve]? –