Timkor

arraysModification

Mar 21st, 2021 (edited)
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*Напишіть функцію, яка приймає на вхід два масива однакової довжини + параметр, який описує їх довжину; і модифікує їх
  2. таким чином, що в першому масиві в кожній i-тій комірці знаходиться різниця цієї комірки і відповідної i-тої комірки
  3. другого масиву, а в другому масиві в кожній i-тій комірці знаходиться сума цієї комірки і відповідної i-тої комірки
  4. першого масиву.*/
  5.  
  6. /*========================================*/
  7.  
  8. function twoArr(a, b, par) { // якщо обирати коректе іменування, то для методу потрібне дієслово. Тут модифікуватиДваМасиви
  9.     if (a.length != b.length) { /* в умові кажуть що будуть однакові,) А ще ви ж нижче приводите ж до par довжини..
  10.     Та якщо заморачуватися (не варто:), то можливо варто врахувати (не заморочуйтесь:),що довжина масивів
  11.     може бути (не буде за умовою:) меншою за par.) О , а що за par - чому не розмірМасиву? От якби так назвали параметр,
  12.     то не виникло б ідеї йому не довіряти,) масиви а і б теж на вашому сумлінні.) */
  13.         return alert("Arrays is not equal in length") /* добре, що застосували ранній вихід! Що важливо врахувати:
  14.         не факт, що вашу функцію викликає людина яка чекає на результат на екрані, вона може бути викликана іншим
  15.         розробником у його коді, і тоді саме в коді йому треба буде отримати інформацію чи норм відпрацювала викликана
  16.         ним ваша функція - і дізнатися про це він може саме з того, що вона повертає. Ця fn модифікує масиви, тому можна
  17.         повертати щось тільки у разі фейлу,(не на вступному можна повертати щось і у разі успіху), що ви і намагалися    
  18.         реалізувати. Команда return alert("Arrays is not equal in length")
  19.         поверне з вашої функції те, що повертає функція alert("Arrays is not equal in length") - а вона просто виводить
  20.         рядок у модальне віконце і не повертає нічого - на мові js це "повертає невизначене" Тобто ваша функція поверне
  21.         undefined у разі різних довжин масивів. Краще щоб при фейлі поверталося false, а ще краще викидалося виключення,
  22.         але про це вже на наступному рівні.) */
  23.     } // Проверка на равенство длины - каменти краще писати перед блоком, що вони пояснюють.
  24.  
  25.     a.length = b.length = par; // присвоение длины по заданному параметру - або поряд
  26.  
  27.     for (let i = 0; i < par; i++) {
  28.         a[i] = a[i] - b[i]; /* я зрозумів цю задачу так, що потрібно модифікувати масиви виходячи із начальних значень */
  29.         b[i] = a[i] - b[i]; /* щоб з [10,20] [3,4] отримали [7, 16] [13, 24]*/
  30.     } // выполнение модификации по тз
  31. } /* возврата массивов не делал, по скольку внутри функции их нет, функция меняет их по ссылкам - все вірно. Повертати масиви не обов'язково. А якщо повертати, то як повернути обидва?)  
  32. Якщо повернути один:
  33.  ...
  34.     return a;
  35. }
  36. let c = twoArr([10, 20], [3, 4], 2);
  37. то чи буде повернуто посилання на нього, чи буде створено новий масив? Як це перевірити? обов'язково поміркуйте самостійно, на всяк випадок відповіді нижче*/
  38.  
  39. /* Гарного коду */
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69. /*
  70. З функції можна повернути одне значення, або один об'єкт. Обидва масиви можна повернути, але не по окремості, а з'єднавши їх в одну сутність, наприклад в один масив:
  71. ...
  72.     return [a,b];
  73. }
  74. прийняти треба буде відповідним чином.
  75.  
  76. function twoArr (a, b, par) {
  77.      // Проверка на равенство длины
  78.     if (a.length != b.length) {
  79.         return alert("Arrays is not equal in length")
  80.     }
  81.  
  82.     a.length = b.length = par; // присвоение длины по заданному параметру
  83.  
  84.     // выполнение модификации по тз
  85.     for (let i = 0; i < par; i++) {
  86.         a[i] = a[i] - b[i];
  87.         b[i] = a[i] - b[i];
  88.     }
  89.     return [a, b]; // повертаємо масив масивів
  90. }
  91.  
  92. let a = [10, 20]; // і на моєму сумлінні тепер теж )
  93. let b = [3, 4];
  94. console.log(`before fn modification: a = [${a}];  b = [${b}]`);
  95. let c = twoArr(a, b, 2);
  96. console.log(`after fn modification: a = [${a}];  b = [${b}]`);
  97. c[0][0] = 888;
  98. c[1][1] = '¯\\_(ツ)_/¯'
  99. console.log(`after c[][] modification: a = [${a}];  b = [${b}]`);
  100. */
  101.  
  102.  
Add Comment
Please, Sign In to add comment