9 способов клонировать массив JavaScript

แชร์
ฝัง
  • เผยแพร่เมื่อ 6 ก.ย. 2024
  • Курсы JS 2.0 с крутым ДЗ: itgid.info/cou...
    Все курсы: itgid.info/course
    Чат в телеграмме: t.me/jsrules
    Изображение: hiking.org/201...

ความคิดเห็น • 29

  • @user-hd3lx8qc7s
    @user-hd3lx8qc7s 4 ปีที่แล้ว +18

    Не додумался бы использовать JSON для клонирования. Спасибо, новые знания на вооружение.

    • @itgid
      @itgid  4 ปีที่แล้ว +1

      это хорошо.

    • @user-or1hy4xz8u
      @user-or1hy4xz8u 2 ปีที่แล้ว +1

      @@itgid но там вроде проблема с JSON - если копируется вложенная функция, то тип теряется... как-то так...

    • @PoRoKLusT
      @PoRoKLusT 2 ปีที่แล้ว

      @@user-or1hy4xz8u всё так, об этом сказано в видео, ведь функция это объект.
      В целом так себе урок, куча извращенских способов. По факту для простого копирования это или спрэд оператор или метод slice.
      Хотелось бы узнать способы для полного, глубокого клонирования.

  • @user-ic4ng2ym1n
    @user-ic4ng2ym1n 4 ปีที่แล้ว +4

    Отличный формат, спасибо!

    • @itgid
      @itgid  4 ปีที่แล้ว +1

      Спасибо!

  • @Virisound
    @Virisound 4 ปีที่แล้ว +9

    Так, а рабочего варианта разве нет, кроме JSON? Обычным условием не получится, или рекурсией? Просто, кажется, что есть решение...
    upd: Извиняюсь, в конце услышал по рекурсию, НО, почему не показали этих решений? Одна часть видео есть, а вторая в небо.

    • @maximevtahov2360
      @maximevtahov2360 4 ปีที่แล้ว +2

      а рекурсию сами придумывайте, эхехе

    • @itgid
      @itgid  4 ปีที่แล้ว

      Да цели не было показать рекурсию.

    • @itgid
      @itgid  4 ปีที่แล้ว

      @@maximevtahov2360 а что ее придумывать?

  • @kudriakov
    @kudriakov ปีที่แล้ว +1

    var original=[6,[7,0],9];
    var copy=clone(original);
    function clone(array){
    var returnArray=[];
    array.forEach(elem => {
    if (Array.isArray(elem)) returnArray.push(clone(elem));
    else returnArray.push(elem);
    })
    return returnArray;
    }
    console.log(original,copy);
    original[1].push(8);
    console.log(original,copy);
    // И ничего сложного с рекурсивным алгоритмом. все великолепно работает!

  • @GrigoRASH6000volt
    @GrigoRASH6000volt 3 ปีที่แล้ว

    Vue жаловался на бесконечный луп апдейта, знал что объекты передаются по ссылке, но забыл что массивы, это то же объекты)) Спасибо за видео!

  • @alexforos5425
    @alexforos5425 3 ปีที่แล้ว +1

    Отличное видео, спасибо!

  • @user-ed3rm9px3v
    @user-ed3rm9px3v 4 ปีที่แล้ว +3

    Из-за этой проблемы не лучше было бы остатбся на lodash ?

  • @quantumvector1783
    @quantumvector1783 3 ปีที่แล้ว +1

    Спасибо за инфу, весьма полезно.

  • @roma78.18
    @roma78.18 ปีที่แล้ว +1

    structuredClone(); caniuse=90.26%

  • @user-wn5nc6oo9o
    @user-wn5nc6oo9o 4 ปีที่แล้ว +2

    Александр когда будешь продвинутый JS и будет ли вообще?

    • @itgid
      @itgid  4 ปีที่แล้ว +4

      Не знаю. Как только тема видео становится более менее серьезной, я получаю 30 просмотров за месяц. А затраты на подготовку и реализацию - огромные.

  • @valentinknoll4106
    @valentinknoll4106 4 ปีที่แล้ว

    Надо было тему дальше раскрыть!!!! С рекурсией, там typeof a[ i ] на массив проверяешь и если true то применяешь туже функцию для этого же елемента. Правда рекурсия почти также ресурсоемкая как и с JSON

  • @AlexeyYaricov
    @AlexeyYaricov 4 ปีที่แล้ว +1

    В программировании главное смекалка.

  • @littleion7896
    @littleion7896 4 ปีที่แล้ว

    Отличное видео, его не хватало в js2.0. let b = a.reverse().slice(); a.reverse(); console.log(b); бодрил 🤔.

  • @fordragon9978
    @fordragon9978 2 ปีที่แล้ว

    лайк за каждое видео

  • @user-rr7yr9ml9p
    @user-rr7yr9ml9p 3 ปีที่แล้ว

    спасибо

  • @4ITTonik
    @4ITTonik 4 ปีที่แล้ว +1

    arr.flat(Infinity) рекурсивно проходит по массиву и на выходе массив одного уровня вложенности, как вариант дабы самому не писать рекурсию.

    • @slovaripro
      @slovaripro 4 ปีที่แล้ว

      это уже не относится к задаче клонирование массива.это уже клонирование элементов..немного разные вещи получаются

    • @4ITTonik
      @4ITTonik 4 ปีที่แล้ว

      @@slovaripro Ну можно создать новый массив и в нём к этой конструкции spread применить [...arr.flat(Infinity)] как вариант если вложенность не нужна.

    • @DrZlad
      @DrZlad 3 ปีที่แล้ว

      Тот случай когда комент полезнее самого видео! Спасибо тебе большое!

  • @turtrueweb
    @turtrueweb 4 ปีที่แล้ว

    +

  • @iGotton
    @iGotton 4 ปีที่แล้ว

    +