Search
Write a publication
Pull to refresh
2
0
Дамир @magam9

Программист

Send message
У вас отличные варианты для реализации функции insertValToArr. От себя могу добавить, что можно подобное сделать и через spread, но данный вариант скорее подойдет для одномерных массивов.

function insertValToArr(arr, val) {
  return [...arr, val];
}
Да полностью согласен с вами, нужно учитывать множество факторов при алгоритма клонирования. Хочу отметить, что аргументы в функцию все таки передаются двумя способами, на мой взгляд. Просто по ссылке они передаются не явным образом. Мы не можем явно передать аргумент данным способом как это делается в C# или C++, та и в PHP. Это как преобразование типов в JS — компилятор автоматически это сделает все за нас и преобразует в нужный тип, если это будет возможно
Отличный вариант, нужно подумать над этим. Хорошая пища для размышления, спасибо )
Не думаю, что вы со зла пишете )
Наоборот критика — шикарно, особенно, когда конструктивная. В комментариях мне указали на мои ошибки, где я не прав, даже предложили как улучшить метод для клонирования и это здорово. Во время обсуждения мы учимся и проверяем свои силы. Так что все окей
Я имею ввиду структура массива осталось верной, он не перевел его в объект изменив числовую индексацию на строковую. А так да, ссылается на один и тот же массив.
Отличная идея с map, нужно попробовать ваш вариант на практике и посмотреть на результат, спасибо )
Ваш комментарий меня побудил немного изменить функция для клонирования
function deepClone(obj) {
  const test1 = { a: { d: [1, 2, 3]}, b: 5 };
const test2 = deepClone(test1);
test2.a.d.push('arr')
test2.b = 9;
console.log('test1 object: ', test1);
console.log('test2 object: ', test2);

function deepClone(obj) {
  const clObj = {};
  for(const i in obj) {
    if (obj[i] instanceof Object && !(obj[i] instanceof Array)) {
      clObj[i] = deepClone(obj[i]);
      continue;
    }
    clObj[i] = obj[i];
  }
  return clObj;
}

Добавив одно условие, я скопировал массив верно, но при этом он остался зависимым от массива из другого объекта. Хотя подобное следовало ожидать, но все же интересная особенность

image

Все таки добью эту функцию, чтобы работала корректно не только с объектами, а как минимум еще с массивом. После чего внесу правки в статью. Еще раз, спасибо вам за отзыва )
Да, полностью согласен, есть недоработка работы с массивом. Хоть и писал и писал ее для объекта, но про такое как массив не стоило забывать. Спасибо, за отличный тык носом )
Комментарием выше пользователь Sombressoul сделал фаст-тест функции, которую я предложил и через JSON.parse, огромное спасибо ему за это. Как оказалась JSON.parse уступает в производительности в 10 раз. Ссылка натест
Не знал про данный сервис для проверки скорости функций через бечмарк, буду юзать теперь, спасибо за отзыв )

Information

Rating
Does not participate
Location
Днепр, Днепропетровская обл., Украина
Date of birth
Registered
Activity