Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Напишіть функцію, яка приймає на вхід два масива однакової довжини + параметр, який описує їх довжину; і модифікує їх
- таким чином, що в першому масиві в кожній i-тій комірці знаходиться різниця цієї комірки і відповідної i-тої комірки
- другого масиву, а в другому масиві в кожній i-тій комірці знаходиться сума цієї комірки і відповідної i-тої комірки
- першого масиву.*/
- /*========================================*/
- function twoArr(a, b, par) { // якщо обирати коректе іменування, то для методу потрібне дієслово. Тут модифікуватиДваМасиви
- if (a.length != b.length) { /* в умові кажуть що будуть однакові,) А ще ви ж нижче приводите ж до par довжини..
- Та якщо заморачуватися (не варто:), то можливо варто врахувати (не заморочуйтесь:),що довжина масивів
- може бути (не буде за умовою:) меншою за par.) О , а що за par - чому не розмірМасиву? От якби так назвали параметр,
- то не виникло б ідеї йому не довіряти,) масиви а і б теж на вашому сумлінні.) */
- return alert("Arrays is not equal in length") /* добре, що застосували ранній вихід! Що важливо врахувати:
- не факт, що вашу функцію викликає людина яка чекає на результат на екрані, вона може бути викликана іншим
- розробником у його коді, і тоді саме в коді йому треба буде отримати інформацію чи норм відпрацювала викликана
- ним ваша функція - і дізнатися про це він може саме з того, що вона повертає. Ця fn модифікує масиви, тому можна
- повертати щось тільки у разі фейлу,(не на вступному можна повертати щось і у разі успіху), що ви і намагалися
- реалізувати. Команда return alert("Arrays is not equal in length")
- поверне з вашої функції те, що повертає функція alert("Arrays is not equal in length") - а вона просто виводить
- рядок у модальне віконце і не повертає нічого - на мові js це "повертає невизначене" Тобто ваша функція поверне
- undefined у разі різних довжин масивів. Краще щоб при фейлі поверталося false, а ще краще викидалося виключення,
- але про це вже на наступному рівні.) */
- } // Проверка на равенство длины - каменти краще писати перед блоком, що вони пояснюють.
- a.length = b.length = par; // присвоение длины по заданному параметру - або поряд
- for (let i = 0; i < par; i++) {
- a[i] = a[i] - b[i]; /* я зрозумів цю задачу так, що потрібно модифікувати масиви виходячи із начальних значень */
- b[i] = a[i] - b[i]; /* щоб з [10,20] [3,4] отримали [7, 16] [13, 24]*/
- } // выполнение модификации по тз
- } /* возврата массивов не делал, по скольку внутри функции их нет, функция меняет их по ссылкам - все вірно. Повертати масиви не обов'язково. А якщо повертати, то як повернути обидва?)
- Якщо повернути один:
- ...
- return a;
- }
- let c = twoArr([10, 20], [3, 4], 2);
- то чи буде повернуто посилання на нього, чи буде створено новий масив? Як це перевірити? обов'язково поміркуйте самостійно, на всяк випадок відповіді нижче*/
- /* Гарного коду */
- /*
- З функції можна повернути одне значення, або один об'єкт. Обидва масиви можна повернути, але не по окремості, а з'єднавши їх в одну сутність, наприклад в один масив:
- ...
- return [a,b];
- }
- прийняти треба буде відповідним чином.
- function twoArr (a, b, par) {
- // Проверка на равенство длины
- if (a.length != b.length) {
- return alert("Arrays is not equal in length")
- }
- a.length = b.length = par; // присвоение длины по заданному параметру
- // выполнение модификации по тз
- for (let i = 0; i < par; i++) {
- a[i] = a[i] - b[i];
- b[i] = a[i] - b[i];
- }
- return [a, b]; // повертаємо масив масивів
- }
- let a = [10, 20]; // і на моєму сумлінні тепер теж )
- let b = [3, 4];
- console.log(`before fn modification: a = [${a}]; b = [${b}]`);
- let c = twoArr(a, b, 2);
- console.log(`after fn modification: a = [${a}]; b = [${b}]`);
- c[0][0] = 888;
- c[1][1] = '¯\\_(ツ)_/¯'
- console.log(`after c[][] modification: a = [${a}]; b = [${b}]`);
- */
Add Comment
Please, Sign In to add comment