Как я могу упростить проверку наличия значения в документе Json

#node.js

#node.js

Вопрос:

Вот мой сценарий: я анализирую веб-страницу с помощью 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();
    }
  

это работает, но мне интересно, существует ли более глобальный подход, чем идти и проверять каждое поле, если оно определено?

Ответ №1:

Вы могли бы использовать своего рода вспомогательную функцию, чтобы сначала проверить, есть ли элемент undefined , а если нет, вернуть trim() отредактированную версию строки.

 var data = Array();
data["HIGH SCHOOL DISTRICT"] = " 123 ";

function trimString(inputStr) {
  return (inputStr != undefined amp;amp; typeof inputStr == "string") ? inputStr.trim() : undefined;
}

console.log(trimString(data["HIGH SCHOOL DISTRICT"]));
console.log(trimString(data["ELEMENTARY OTHER"]));