Есть ли какой-либо способ «шаблонной» проверки, если в объекте в JS отсутствуют или неправильные значения?

#javascript #node.js #templates

#javascript #node.js #шаблоны

Вопрос:

Я получаю данные из API (каждый раз по одному объекту JS) и хочу проверить, отсутствует ли какое-либо из значений в нем или имеет неправильный тип данных.
Можно ли определить что-то вроде шаблона: например {"name": String, "Housenumber: "Integer , } и проверить, имеет ли фактический объект те же ключи и типы данных?

Комментарии:

1. Да, это возможно.

2. Как я могу это сделать?

3. Это не вопрос программирования… Это не тривиальная задача, вы должны проанализировать объект данных и шаблон (или сохранить шаблон как готовый к анализу), затем сравнить анализ шаблона с анализом объекта данных. Анализ выполняется с помощью рекурсивной функции, которая сохраняет типы объектов и типы свойств в структуре данных в виде строк. Проверка данных по-прежнему непростая, потому что порядок свойств объекта не обязательно всегда одинаков.

Ответ №1:

Да, вы можете просто создать объект со всеми keys и datatypes . После этого вы можете просто перебрать объект и сверить его со своими данными.

Имейте в виду, что вы не можете проверить разницу между floats и integers с использованием typeof . Для этого вам нужна пользовательская проверка.

Хотя я предлагаю что-то вроде typescript для проверки типов, поскольку для этого есть множество встроенных функций.

 const personInterface = {
  name: "string",
  age: "number",
};

const persons = [
  {
    name: "bob",
    age: 18,
  },
  {
    name: "karen",
    age: "50",
  }
];

for(const person of persons) {
  for(const [key, value] of Object.entries(personInterface)) {
    if(typeof person?.[key] === value) {
      console.log(`${person[key]} matches ${value}`);
    } else {
      console.log(`${person[key]} does not match ${value}`);
    }
  }
}