Задать вопрос
Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (16)

Наибольший вклад в теги

Все теги (281)

Лучшие ответы пользователя

Все ответы (286)
  • Обьясните про функцию массив?

    @historydev Куратор тега JavaScript
    Твоя функция содержит ошибку. Нужно сравнивать не с a[0], а с result.

    const getMin = arr => {
      let result = arr[0];
      for(i = 0; i < arr.length; i++){
        if(arr[i] < result){
          result = arr[i];
        }
      }
      return result;
    }
    
    const getMinOld = a => {
      let result = a[0];
      for(i=0;i < a.length;i++){
        if(a[i]< a[0]){
          result = a[i];
        }
      }
      return result;
    }
    
    let mas = [22,5,8,3,44,16];
    
    console.log(getMin(mas)); // 3
    console.log(getMinOld(mas)); // 16
    Ответ написан
  • Почему value выводятся в консоль в обратном порядке?

    @historydev Куратор тега JavaScript
    Рекурсия заставляет код "углубляться" внутрь структуры данных, доходя до самого конца, а затем начинает возвращаться обратно, выполняя оставшуюся часть кода для каждого уровня вызова. Это и приводит к тому, что значения выводятся в обратном порядке.
    Либо так:
    if(typeof list[elem] == 'object') {
            		console.log(list.value);
                reverseNext(list[elem])
            }


    Либо так:
    if(typeof list[elem] == 'object') {
                reverseNext(list[elem])
            } else {
            	console.log(list.value)
            }
    Ответ написан
    2 комментария
  • Ссылка на трейт-объект в статической переменной?

    @historydev
    Я не могу просто взять и изменить поле memory_backend: &'a mut dyn MemoryBackend на


    Значит раздели модули на Sync / not Sync, реализуй одну структуру с Sync, а другую без.
    - Имя и api структуры будут одинаковыми, а модули разные.

    // crate::sync::cache;
    
    pub struct Cache<'a, T> {
        memory_backend: &'a mut dyn MemoryBackend + Send + Sync,
        phantom_data: core::marker::PhantomData<T>,
    }


    // crate::cache;
    
    pub struct Cache<'a, T> {
        memory_backend: &'a mut dyn MemoryBackend,
        phantom_data: core::marker::PhantomData<T>,
    }
    Ответ написан
    3 комментария
  • Как задать переменной тип с данными в зависимости от условия?

    @historydev
    if else должен возвращать один тип.
    - Ты не можешь указать динамический тип переменной user.

    Оборачивай свои структуры в перечисление:
    enum UserRes {
    Res(Res),
    User(User),
    ErrServ(ErrServ)
    }
    
    let user = if a == b { UserRes::Res(Res { / * ... */ }); } else { UserRes::User(User { /* ... */ }); };
    Ответ написан
    Комментировать
  • Какой правильный код debounce React?

    @historydev
    Оба варианта рабочие, но.
    - Хук не используешь в циклах и условиях.
    - Хук не используешь вне реакта.

    - Хук более многословен, для 4 инпутов понадобится 4 вызова хука, 4 состояния и 4 эффекта для работы с каждым по отдельности - это весомый минус, а для useCallback с дебаунсом всего 4:
    const debouncedSearchText = useCallback(debounce((value) => console.log(value), 300), []);
    const debouncedSearchText = useCallback(debounce((value) => console.log(value), 300), []);
    const debouncedSearchText = useCallback(debounce((value) => console.log(value), 300), []);
    const debouncedSearchText = useCallback(debounce((value) => console.log(value), 300), []);

    VS
    const [inputValue, setInputValue] = useState('');
      const debouncedValue = useDebounce(inputValue, 300);
    
      useEffect(() => {
        console.log(debouncedValue);
      }, [debouncedValue]);
    
    const [inputValue, setInputValue] = useState('');
      const debouncedValue = useDebounce(inputValue, 300);
    
      useEffect(() => {
        console.log(debouncedValue);
      }, [debouncedValue]);
    
    const [inputValue, setInputValue] = useState('');
      const debouncedValue = useDebounce(inputValue, 300);
    
      useEffect(() => {
        console.log(debouncedValue);
      }, [debouncedValue]);
    
    const [inputValue, setInputValue] = useState('');
      const debouncedValue = useDebounce(inputValue, 300);
    
      useEffect(() => {
        console.log(debouncedValue);
      }, [debouncedValue]);


    Поэтому я считаю, что первый вариант намного предпочтительнее.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (611)