function isSame(a, b) {
return a.every((item, i) => item === b[i]);
}
arr.reduce((acc, curr) => {
if (acc.every((item) => !isSame(item, curr))) {
acc.push(curr);
}
return acc;
}, []);
if (strlen($_POST['name']) > 60) {
// пока-пока!
return false;
}
if (!preg_match("/[0-9a-z]+@[a-z]/", $_POST['email'])) {
// email не верный, пока-пока!
return false;
}
public function registerAction()
{
if (!empty($_POST))
{
if (!$this->model->validate(['email', 'login', 'wallet', 'password'],$_POST))
{
$this->view->message('Ошибка', 'error', $this->model->error);
}
elseif (!$this->model->checkEmailExists($_POST['email']))
{
$this->view->message('Ошибка', 'error', $this->model->error);
}
elseif (!$this->model->checkLoginExists($_POST['login']))
{
$this->view->message('Ошибка', 'error', $this->model->error);
}
elseif (!$this->model->register($_POST))
{
$this->view->message('Ошибка', 'error', $this->model->error);
}
$this->view->message('Успешно', 'success', "reg OK, check ur email");
}
$this->view->render('Регистрация');
}
//model
public function validate($inputs, $post)
{
$rules = [
'email' => [
'pattern' => '#^([a-z0-9_.-]{1,20}+)@([a-z0-9_.-]+)\.([a-z\.]{2,10})$#',
'message' => 'E-mail адрес указан неверно',
],
'login' => [
'pattern' => '#^[a-z0-9]{3,15}$#',
'message' => 'Логин указан неверно (разрешены только латинские буквы и цифры от 3 до 15 символов)',
],
'wallet' => [
'pattern' => '#^[a-z0-9]{3,15}$#',
'message' => 'Кошелек указан неверно',
],
'password' => [
'pattern' => '#^[a-z0-9]{6,30}$#',
'message' => 'Пароль указан неверно (разрешены только латинские буквы и цифры от 6 до 30 символов)',
],
];
foreach ($inputs as $val)
{
if (!isset($post[$val])
or
!preg_match($rules[$val]['pattern'], $post[$val]))
{
$this->error = $rules[$val]['message'];
return false;
}
}
return true;
}
// !НЕПРАВИЛЬНО!
$query = 'SELECT * FROM accounts WHERE id = '.$_POST['id'];
const toDelX = new Set;
const toDelY = new Set;
X.forEach((n, i) => {
if (X2.includes(n) && Y2.includes(Y[i])) {
toDelX.add(n);
toDelY.add(Y[i]);
}
});
X2.splice(0, X2.length, ...X2.filter(n => !toDelX.has(n)));
Y2.splice(0, Y2.length, ...Y2.filter(n => !toDelY.has(n)));
timer(v){
let func = v,
timerId = null;
if (timerId) {
clearInterval(timerId);
}
timerId = setInterval(function tick() {
func();
}, 500);
}
const str = 'abcde'
function reverseString(str) {
let tempString = ''
for(let j = str.length - 1; j >= 0; j--){
tempString += str[j]
}
return tempString
}
console.log('str:', str)
console.log('reverse:', reverseString(str))
const str = 'abcde'
function reverseString(str) {
return str.split('').reverse().join('')
}
console.log('str:', str)
console.log('reverse:', reverseString(str))
Сначала подумал что можно рандомизированный массив засунуть в set...
function randomArr(length, min, max) {
const values = new Set;
while (values.size < length) {
values.add((Math.random() * (max - min + 1) | 0) + min);
}
return [...values];
}
const arr = randomArr(40, 1, 100);
function randomArr(length, min, max) {
const arr = Array.from({ length: max - min + 1 }, (n, i) => i + min);
return Array.from({ length }, () => arr.splice(Math.random() * arr.length | 0, 1)[0]);
}
function randomArr(length, min, max) {
const arr = Array.from({ length: max - min + 1 }, (n, i) => i + min);
for (let i = arr.length; --i > 0;) {
const j = Math.random() * (i + 1) | 0;
[ arr[j], arr[i] ] = [ arr[i], arr[j] ];
}
return arr.slice(0, length);
}