Вот мой сценарий: я анализирую веб-страницу с помощью javascript, а затем отправляю результат в restApi, чтобы сохранить json в БД. Код работает нормально, пока отправляются все поля, которые я определил в своем скрипте. Проблема в том, что со временем веб-сайт может изменить имена полей, что приведет к сбою моего кода. Первоначально я использовал такой код
const mySchool = new mls.School();
mySchool.highSchoolDistrict = data["HIGH SCHOOL DISTRICT"].trim();
mySchool.elementary = data.ELEMENTARY.trim();
mySchool.elementaryOther = data["ELEMENTARY OTHER"].trim();
mySchool.middleJrHigh = data["MIDDLE/JR HIGH"].trim();
mySchool.middleJrHighOther = data["MIDDLE/JR HIGH OTHER"].trim();
mySchool.highSchool = data["HIGH SCHOOL"].trim();
mySchool.highSchoolOther = data["HIGH SCHOOL OTHER"].trim();
newListing.school = mySchool;
но когда элемент не существует, он жалуется на то, что не может использовать обрезку неопределенного. Итак, чтобы исправить это, я придумал это
if (data["PATIO/PORCH"]) {
newExterior.patioPorch = data["PATIO/PORCH"].trim();
}
это работает, но мне интересно, есть ли более глобальный подход, чем пойти и проверить каждое поле, если оно определено?
Вы можете использовать своего рода вспомогательную функцию, чтобы сначала проверить, является ли элемент undefined
, а если нет, вернуть trim()
-ed версию строки.
var data = Array();
data["HIGH SCHOOL DISTRICT"] = " 123 ";
function trimString(inputStr) {
return (inputStr != undefined && typeof inputStr == "string") ? inputStr.trim() : undefined;
}
console.info(trimString(data["HIGH SCHOOL DISTRICT"]));
console.info(trimString(data["ELEMENTARY OTHER"]));