#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}`);
}
}
}