RatiboR1978
@RatiboR1978

Как решить задачу js?

Доброе время суток! Вот код задачи https://repl.it/IBuo Вся проблема у меня вот здесь (Object.keys(form)[i] === fields[i].name) я добрался до свойств form через Object.keys(form) а оказывается нельзя завязываться не порядок полей в объекте, т.к. javascript не гарантирует, что они всегда будут возвращаться в одинаковом порядке. Краткое условие задачи проверяем валидна форма или нет. Помогите подсказкой как еще добраться до свойств, еще один цикл не вариант.
  • Вопрос задан
  • 228 просмотров
Решения вопроса 1
devellopah
@devellopah
// validation patterns
const fname =  /^[a-z ]{5,}$/i;
const sname = /^[a-z ]{5,}$/i;
const email = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,6})+$/;
const phone = /^\+7[0-9]{10}$/;

const patterns = { 
	name: fname, 
	surname: sname, 
	email, 
	phone, 
	mobilePhone: phone, 
	workPhone: phone 
};

// forms
const forms = [
  { name: 'Ivan Ivanov', email: 'ivan@test.co', phone: '+79212753690' },
  { name: 'III', email: 'ivan@test', phone: '11111' },
  { name: 'Ivan Ivanov', email: 'ivan@test.co', phone: '+79212753690', mobilePhone: '+79212753690'},
  {},
  { name: 'Ivan Ivanov', email: 'ivan@test.co', phone: '+79212753690', mobilePhone: 'фывыафывафыв'},
  { name: 'Ivan Ivanov', email: 'ivan@test.co', phone: '+79212753690', mobilePhone: '+79212753690', workPhone: 'asfdadsfd', surname: ''},
  { surname: 'Ivan Ivanov', mobilePhone: 'фывафыва', name: 'Ivan Ivanov', email: 'ivan@test.co', phone: '+79212753690', workPhone: '+79212753690'
  }
];

validateAll(forms, patterns);

function validateAll(forms, patterns) {
	return forms.map( form => validate(form, patterns) );
}


function validate(form, patterns) {
	const keys = Object.keys(form);
	const errors = [];
	
	if(!keys.length) return {target: {}, errors: ['empty form is provided']};
	
	keys.forEach(key => {
		if( !patterns[key].test(form[key]) ) {
			errors.push(`${key} value is invalid`);
		}
	});
	
	return {
		target: JSON.stringify(form),
		errors
	};
}


https://repl.it/IBuo/1

spoiler
p.s. если захочешь отблагодарить - https://money.yandex.ru/to/410013748902785 (не принципиально)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы