• Задачка на массивы и циклы JS?

    @lomeat
    абстрактный ленивый прокрастинатор
    const reverse = arr => arr.map((_, i) => arr[arr.length - (i + 1)]);
    
    console.log(reverse([1, 2, 3, 4]))
    
    // либо
    
    Array.prototype.newReverse = function() {
      return this.map((_, i) => this[this.length - (i + 1)])
    }
    
    console.log([1, 2, 3, 4].newReverse())
    Ответ написан
  • Как сделать сортировку строк?

    @lomeat
    абстрактный ленивый прокрастинатор
    отвечу по простому, не углубляясь в твой код и с псевдокодом -- дальше разберешься

    через document.querySelectorAll('D') получаешь массив всей группы с id="D"
    получаешь контент нового дом элемента
    кладешь его в массив через arr.push(element) либо newArr = [...arr, element]
    потом делаешь something.append(arr)
    сортировка по имени уже встроена в api движка и работает в функции [].sort((a, b) => a > b)
    Ответ написан
    Комментировать
  • Как исправить ошибку?

    @lomeat
    абстрактный ленивый прокрастинатор
    смотреть доку бека для начала и чекать payload
    потом обернуть await вызовы в try {} catch (e) {} и посмотреть ошибку детальнее в console.log например
    Ответ написан
    Комментировать
  • Как создать тип для реакт компонента с поддержкой рефов?

    @lomeat
    абстрактный ленивый прокрастинатор
    unknown зачем придумали?
    Ответ написан
    Комментировать
  • Как заставить браузер сохранять пару логин-пароль, если в форме только пароль?

    @lomeat
    абстрактный ленивый прокрастинатор
    Никак. Так устроена логика поиска лейблов формы (инпутов) у хрома и иных браузеров. Изменить данные руками в настройках хрома например:

    623fbcb0dac66664512745.png
    Ответ написан
    Комментировать
  • Ошибка codewars?

    @lomeat
    абстрактный ленивый прокрастинатор
    у тебя пробел в массиве, что недопустимо для пинкода

    Варианты красивых решений без регулярок и без 100500 строк кода:
    const validatePIN = (pin) =>
      (pin.toString().trim().length === 4 || pin.toString().trim().length === 6) &&
      pin.every((symbol) => typeof symbol === "number");
    
    function validatePin2(pin) {
      const length = pin.toString().trim().length;
      const isRightLength = length === 4 || length === 6;
      const isOnlyNumber = pin.every((symbol) => typeof symbol === "number");
      return isRightLength && isOnlyNumber;
    }
    
    function validatePin3(pin, sizes) {
      const length = pin.toString().split(" ").join("").length;
      const isRightLength = sizes.some((size) => length === size);
      const isOnlyNumber = pin.every((symbol) => typeof symbol === "number");
      return isRightLength && isOnlyNumber;
    }
    
    validatePin2('123a') -> false
    validatePin2('1234') -> true
    validatePin2(345146) -> true
    
    validatePin3('1234', [4, 6]) -> true
    validatePin2(1234, [2]) -> false
    validatePin2('1234 567 89', [1, 4, 9]) -> true
    Ответ написан
    Комментировать
  • Что позволяет отобразить типы данных автоматически?

    @lomeat
    абстрактный ленивый прокрастинатор
    Это вопрос не по реакту, а по WebStorm. И по-моему такое поведение редактора по умолчанию. А вообще: https://www.jetbrains.com/help/webstorm/viewing-me...
    Ответ написан
    2 комментария
  • Как построить приложение-парсер?

    @lomeat
    абстрактный ленивый прокрастинатор
    1. Все "посты" с досок 100% имеют поля даты (возможно даже created_at) и id. Если все-таки не удается забрать эти поля, то всегда можно присваивать свою текущую дату в момент получения последнему по дате в списке элементу и сохранять его в какой-то стейт вне исполнения контекста скрипта. Когда ты получаешь новые данные, то фильтруешь по дате и url/href/img сохраненного элемента. Новые отфильтрованные постишь куда тебе надо (в бота тг например) и потом сохраняешь снова новый последний элемент.

    2. Самый простой вариант это setInterval, но лучше почитай про node-schedule

    3. Я использую vercel, но кроме него популярно еще решение от heroku.
    Ответ написан
    1 комментарий
  • Возможен ли такой фейстрекинг в браузере?

    @lomeat
    абстрактный ленивый прокрастинатор
    Конечно, facebook даже для react делал свою библиотеку где-то в 2019 еще

    Плюс гуглится тема очень легко
    https://www.youtube.com/watch?v=wVK3HHbli7g
    https://towardsdatascience.com/facial-recognition-...
    Ответ написан
    Комментировать
  • Как работает эта программа?

    @lomeat
    абстрактный ленивый прокрастинатор
    Почитал комментарии - тут нет скрытых неявных действий, как раз-таки JS последователен -> императивен.

    function checkAge(age) - function declaration, то есть объявление функции с таким-то телом, где просто описание, что это функция делает. Например, в твоем примере она проверяет соответствует ли значение переменной age логическому сравнению `> 18`. То есть если age будет 20, то вернется true, иначе откроется нативное модальное окно с подтверждением Да / Нет, которое в свою очередь тоже вернет либо true, либо false.

    Далее в переменную age сохраняется результат функции prompt(), которая спрашивает возраст у пользователя и потом это введенное число сохраняет в переменную. Если ничего не ввести, то будет 18 по дефолту.

    Условие if в конце кода проверят булево значение результата исполнения функции checkAge(age). То есть его можно переписать в виде `if (checkAge(age) === true) {}`
    Если checkAge вернул true, то тогда откроется модальное окно alert("Досуп получен'), иначе второй.

    Возможный вариант действий:
    - открылся prompt
    - юзер ввел 16
    - открылся confirm
    - юзер ответил Да
    - доступ получен
    Ответ написан
  • Почему setState не меняет состояние?

    @lomeat
    абстрактный ленивый прокрастинатор
    Весь твой код в принципе неправильный. Я, конечно, не знаю, что за компонент Form, но предполагаю, что там тоже будут ошибки. Возможно ты gettingWeather передаешь в onSubmit и там получаешь данные погоды, которые в итоге все равно никуда не идут - потому что код не дописан, но ок, вопрос вообще не про это.

    State в React-компоненте это не просто переменная, которую можно создать с помощью const или let. Есть два варианта создания компонента и хранение стейта - это классовый и функциональные подходы:

    1) Class
    class App extends React.Component {
      // на самом деле тоже старый подход
      constructor() {
        this.state = { city: "Какой-то город" }
      }
      // babel из "коробки" давно уже поддерживает такой вариант
      state = { city: "Какой-то город" }
    }


    2) Functional
    const App = () => {
      const [state, setState] = React.useState('Какой-то город')
    }


    Чтобы поменять значение стейт надо вызвать функцию в которой ты меняешь стейт. То есть в твоем случае handleClick должен находить в блоке App, а не gettingWeather и вызываться например при клике на кнопку где-то
    <button onClick={handleClick}>Set new state</button>


    P.S. А, ну и у App в this нет setState, который ты вызываешь из handleClick. Короче ты смешал все виды взаимодействия с состоянием в одной функции. Советую почитать сначала туториал реакта на оф сайте, а потом что-то делать методом тыка.
    Ответ написан
    Комментировать
  • Как добавлять и отправлять за раз более одного изображения(файла) через форму на сервер?

    @lomeat
    абстрактный ленивый прокрастинатор
    У тега <input type="file"/> в принципе всегда можно загружать несколько файлов. Просто первый доступен в колбеке изначально, а остальные достаются через интерфейс FileList в JS.
    В целом зачем что-то расписывать если есть дока: https://developer.mozilla.org/en-US/docs/Web/API/F...
    Ответ написан
    Комментировать
  • Как сделать плавающий блок справа?

    @lomeat
    абстрактный ленивый прокрастинатор
    я может не понял
    стандартный position: fixed не подходит?
    если позиция сверху и снизу не известна, то отступ от границ же все равно известен? При пролистывании до верха или низа страницы, можно менять position на relative.
    Ответ написан
  • Быстрый ответ/консультация на тему программирования?

    @lomeat
    абстрактный ленивый прокрастинатор
    Да банально чатики всякие. Вообще не понимаю как можно чему-то обучаться, если не находиться в профильных кругах. Тот же чат по JS в телеге: https://t.me/JS_learn
    Но я там все ненавижу, кто задает простые вопросы, которые можно погуглить.
    В гуглении нет ничего плохого, наоборот бесят люди, которые не умеют гуглить. Это второй навык любого человека, связанного с работой за ПК, имхо. Потому что по сути это и есть самый точный и развернутый ответ, который ты только сможешь найти. А люди лично тебе могу лишь просто более доступно объяснить какие-то вопросы, но не более.

    Например, я недавно делал конструктор картинок и я гуглил часа 3 наверное, чтобы понять, что у браузера нет API для редактирования картинок как мне надо и пришлось допирать до рисования на канвасе. Просто я к тому, что я до этого сам дошел с гуглом и многому научился и теперь могу рассказать от и до как это все работает. А в чатике мне бы так не помогли. А если бы дали сразу рабочий код, то вообще все плохо.
    Ответ написан
    Комментировать
  • Как читать код?

    @lomeat
    абстрактный ленивый прокрастинатор
    обычные вложения колбеков со стандартной композицией - справа-налево
    типа
    const a = b => c => d => b * c * d
    setTimeout(function(x => x * 2) { 
      console.log(x) 
    } ,10)
    function(function(function()))

    а вызовы методов объектов - как обычно слева-направо
    типа
    const s = new Number(123).toString().toLowerCase()

    как введут в ES9 пайпы, будет проще, ждем |>
    Ответ написан
    Комментировать