Timkor

arrayReference

Feb 2nd, 2021 (edited)
669
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*так як я не зрозумів що саме викликало у вас питання, то я просто прокоментую деякі моменти, а ви зможете порівняти наше ставлення до них */
  2. /*
  3. невеличкий тест:
  4. let a = [1,3]
  5. let b = [1,3];
  6. console.log(a === b); // що виведе?
  7.  
  8. // а так:
  9. let a = [1,3]
  10. let b = a;
  11. console.log(a === b); // що виведе?
  12.  
  13. далі буде і про порівняння об'єктів (точніше посилань на них).
  14. */
  15.  
  16.  
  17. /* функцію переніс вгору, щоб не межувалася в коді*/
  18. function reverse(m, a, y) { /* параметри теж заслуговують на классні іменування!)) Після передачи у параметр m змінної arr на масив [1, 2, 3, 4, 5] вказують обидві ці змінні-посилання. На один й той самий пустий масив тепер вказують змінні- посилання y та arrReverse */
  19.     console.log(`Довжина масиву arr в функції реверс ДО реверсу: ${m.length}`);
  20.     console.log(`Значення довжини arr до реверсу: ${a}`)
  21.     for (let j = 0; j < a; j++) {
  22.         y.push(m.pop()); /* тут вже записуєте до раніше пустого масиву реверснутий [1, 2, 3, 4, 5], а сам [1, 2, 3, 4, 5]
  23.         обнуляєте, тобто дістаєте з кінця (забираєте з нього) кожний з його елементів командою pop та додаєте до масиву на
  24.         який посилаються змінні: y та arrReverse . При цьому на той масив що ви спустошуєте pop-ом як і раніше посилаються                       
  25.         дві змінні: m та arr, хоча змінні arr та arrReverse  недоступні у скоупі функції - вони посилаються саме на тіж
  26.         самі масиви що і змінні  m та y */
  27.     }
  28.     console.log(`Масив arr після видалення, має бути 0 - ${m}`);
  29.     console.log(`Довжина після видалення має бути 0 - ${m.length}`);
  30.     console.log(`Новий arrReverse масив має реверснути - ${y}`);
  31.  
  32.    console.log(`Масив arr після видалення: ${m}`);
  33.    console.log(`Масив arr після прирівнювання ${m}`);
  34.    console.log(`Масив arrReverse після прирівнювання ${y}`);
  35.    return y; // повертаєте посилання на реверснутий масив , на нього все ще вказують дві змінні: y та arrReverse
  36. }
  37.  
  38. let arr= []; // можна let arr = [1, 2, 3, 4, 5];
  39. arr = [1, 2, 3, 4, 5];
  40. let arrSize = 5;
  41. let arrReverse = []
  42.  
  43. arr = (reverse(arr, arrSize, arrReverse)); /* раніше змінна arr посилалася на масив [1, 2, 3, 4, 5], тепер до змінної arr повернеться щось із функції, на що й буде встановлене її посилання, тобто сам масив [1, 2, 3, 4, 5] ми точно втратимо (якщо тільки не його ж будемо повертати з функції) */
  44. /*тепер змінна arr та arrReverse вказують на один й той самий масив, у цьому можна впевнитися :*/
  45. console.log('строге порівняння поверне true для змінних-посилань якщо вони посилаються на один й той самий об"єкт: ' + (arr === arrReverse));
  46. arr[1] = '888'; // тест щоб впевнитися
  47.  
  48. console.log('Функція завершилась')
  49. console.log(`Масив arrReverse став: ${arrReverse}`);
  50. console.log(`Масив arr тепер: ${arr}`);
  51.  
  52. // що тут сказати.. Гарного коду!)
  53. ааа, ще , замінив всі алерти на консольлоги, не дякуйте!  а хоча...))
Add Comment
Please, Sign In to add comment