Size: a a a

JavaScript — русскоговорящее сообщество

2020 August 29

g

godunovofc in JavaScript — русскоговорящее сообщество
Пытался, он все равно меняет значение, даже вне функции, глобально, что-то с методом shift не так
источник

АБ

Артём Бондаренко... in JavaScript — русскоговорящее сообщество
Смотри у тебя многомерный массив. Поэтому даже когда ты достаешь все значения из начального значения ты достаешь ссылки на те массивы что вложены в него
источник

АБ

Артём Бондаренко... in JavaScript — русскоговорящее сообщество
По хорошему тебе нужна отдельная функция которая просто значения будет перекладывать
источник

АБ

Артём Бондаренко... in JavaScript — русскоговорящее сообщество
А так ты все равно при вызове метода стучишся к той же области памяти
источник

АБ

Артём Бондаренко... in JavaScript — русскоговорящее сообщество
Нужно что-то типо

function copyArry(arr){
return arr.reduce((acc, item) =>{
acc.push([...item]);
}, [])
}

Но это максимально не универсальный вариант можно сделать лучше (этот только для двумерного массива).
источник

g

godunovofc in JavaScript — русскоговорящее сообщество
Спасибо, сейчас попробую
источник

モリモト in JavaScript — русскоговорящее сообщество
Артём Бондаренко
Нужно что-то типо

function copyArry(arr){
return arr.reduce((acc, item) =>{
acc.push([...item]);
}, [])
}

Но это максимально не универсальный вариант можно сделать лучше (этот только для двумерного массива).
рекурсию сделать можно
источник

АБ

Артём Бондаренко... in JavaScript — русскоговорящее сообщество
モリモト
рекурсию сделать можно
По хорошему там ещё проверку на типо данных нужно лепить потом для объекта лепить отдельную функцию копирования. Я понимаю что это не разу не по фешую, но я обычно просто паршу в json и обратно в таких случаях😅
источник

モリモト in JavaScript — русскоговорящее сообщество
@rtemBondarenko @godunovofc


const copyArray = array => {
 const iterate = a => a.map( v => {
   if ( v instanceof Array ) {
     return iterate(v)
   }
   else { return v }
 })
 
 return iterate( array )
}
источник

АБ

Артём Бондаренко... in JavaScript — русскоговорящее сообщество
С одной стороны да, но если в массиве лежат помимо других массив ещё и объекты, в которых могут лежать другие массивы и объекты то код ещё несколько раздувается
источник

モリモト in JavaScript — русскоговорящее сообщество
Артём Бондаренко
С одной стороны да, но если в массиве лежат помимо других массив ещё и объекты, в которых могут лежать другие массивы и объекты то код ещё несколько раздувается
не особо
источник

モリモト in JavaScript — русскоговорящее сообщество
@rtemBondarenko

const copyArray = array => {
 const isArray = v => v instanceof Array
 const isObject = v => !!(
   v &&
   v.constructor &&
   v.constructor === Object
 )
 
const copy = v => {
  if ( v[0] ) {
    if ( isArray( v ) ) { return iterateArray(v) }
    if ( isObject( v ) ) { return iterateObject(v) }
    else { return v }
  }
  else { return v }
}

const iterateObject = o => {
  return Object.entries( o ).map( ([k,v]) => {
    return copy( v )
  })
}

 const iterateArray = a => a.map( v => {
   return copy( v )
 })
 
 return copy( array )
}
источник

モリモト in JavaScript — русскоговорящее сообщество
оформить получше можно, но не с телефона точно
источник

ИС

Илья Салмасов... in JavaScript — русскоговорящее сообщество
Для этого есть deepClone в любой fp библиотеке, зачем писать велосипеды
источник

モリモト in JavaScript — русскоговорящее сообщество
Илья Салмасов
Для этого есть deepClone в любой fp библиотеке, зачем писать велосипеды
зачем тянуть библиотеку ради одной задачи
источник

ИС

Илья Салмасов... in JavaScript — русскоговорящее сообщество
モリモト
зачем тянуть библиотеку ради одной задачи
Чтобы не писать велосипед? Чтобы код был уже покрыт тестами?)
К тому же тришейкинг есть
источник

KS

Konstantin Sedykh in JavaScript — русскоговорящее сообщество
モリモト
зачем тянуть библиотеку ради одной задачи
90% что она уже где-то юзается в зависимостях.
источник

モリモト in JavaScript — русскоговорящее сообщество
Konstantin Sedykh
90% что она уже где-то юзается в зависимостях.
в таком случае обоснованно, согласен
источник

ДС

Дворецкова Светлана... in JavaScript — русскоговорящее сообщество
Привет, с Rome уже кто-нибудь работал? Есть отзывы какие?
источник

Z

Zaff in JavaScript — русскоговорящее сообщество
Минимальное количество жс 🤔
источник