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 createRandomArr(size, min, max) {
if (size > (max -= ~-min)) {
throw 'невозможно создать массив указанного размера';
}
const values = new Set;
for (; values.size < size; values.add(min + Math.random() * max | 0)) ;
return [...values];
}
const arr = createRandomArr(40, 1, 100);function createRandomArr(size, min, max) {
const len = max - min + 1;
const arr = [...Array(len).keys()];
return Array.from(
{ length: Math.min(size, len) },
() => min + arr.splice(Math.random() * arr.length | 0, 1)[0]
);
}function createRandomArr(size, min, max) {
const arr = Array.from(
{ length: max - min + 1 },
(_, i) => i + min
);
for (let i = arr.length; --i > 0;) {
const j = Math.floor(Math.random() * (i + 1));
[ arr[j], arr[i] ] = [ arr[i], arr[j] ];
}
return arr.slice(-size);
}