Задания по JS. Нужна адекватная критика.
Всем привет. Кодил я на Python, хотел всегда освоить дальше js. Знал каие-то базовые моменты. Недавно прислали мне задания, что бы проверить уровень знаний js. Сел написал первый свой код на js. По итогу получил фидбек: задания выполнены неверно, потренеруйтесь и попробуйте снова. Так вот суть вопроса в том, что я не против потренироваться, но мне нужен совет, что не так было сделано и что в конце концов я должен тренировать :write: Просто по факту все функции выполняют то, что требовалось в заданиях. Прошу вас глянуть и сказать в чем проблема то, может я действительно идиот и не правильно понял задания, либо же я както не по js-овски их выполнил, или не правильно оформил код. Всем заранее спасибо за ответ, а то ответ "задания выполнены неверно" не дает по ночам спать спокойно.
Задания: 1. In JavaScript write a function summing all array elements. function arraySum(array) { // your code goes here } arraySum([1, 2, 3, 4]) // 10 2. Let's separate array iteration and an operation to be done. Write a function folding an array with any given function. function fold(array, operation) { // your code goes here } function add(a, b) { return a + b } function mul(a, b) { return a * b } fold([1, 2, 3, 4], add) // add(add(add(1, 2), 3), 4) === 10 fold([1, 2, 3, 4], mul) // 24 3. Add an optional parameter to start folding with. function fold(array, operation, initial) { // your code goes here // hint: use arguments.length } fold([1, 2, 3, 4], add) // 10 fold([1, 2, 3, 4], add, 10) // add(add(add(add(10, 1), 2), 3), 4) === 20 fold([1, 2, 3, 4], mul, 10) // 240 fold([1, 2, 3, 4], add, '10') // '101234' 4. Write the same fold function recursively. Do not simulate cycle via recursion. function fold(array, operation, initial) { // your code goes here // hint: use array.slice } А вот сам код решений: // Task 1 function arraySum(array){ var sum = 0; for (var i=0; i < array.length; i++) { sum+=array[i]; }; alert(sum);} arraySum([2, 4, 3]); // Task 2 function arraySum(array, operation){ var answer = array[0]; for(var i = 1; i < array.length; i++){ if (operation == '+') { answer += array[i];} else if (operation == '-') { answer -= array[i];} else if (operation == '*') { answer *= array[i];} else if (operation == '/') { answer /= array[i];} } alert(answer);} arraySum([1, 2, 3, 4], '/'); //Task 3 function arraySum(array, operation, initial){ if (typeof initial == 'string') { var answer = initial + array.join('');} if (initial == undefined) { var answer = array[0];} else if (operation == '+') { var answer = initial + array[0];} else if (operation == '-') { var answer = initial - array[0];} else if (operation == '*') { var answer = initial * array[0];} else if (operation == '/') { var answer = initial / array[0];} for(var i = 1; i < array.length; i++){ if (operation == '+') { answer += array[i];} else if (operation == '-') { answer -= array[i];} else if (operation == '*') { answer *= array[i];} else if (operation == '/') { answer /= array[i];} } alert(answer);} arraySum([1, 2, 3, 4], '+', '10'); // //Task 4 function arraySum(array, operation, initial){ function startAnswer(){ if (typeof initial == 'string') { var answer = initial + array.join('');} if (initial == undefined) { var answer = array[0];} else if (operation == '+') { var answer = initial + array[0];} else if (operation == '-') { var answer = initial - array[0];} else if (operation == '*') { var answer = initial * array[0];} else if (operation == '/') { var answer = initial / array[0];} return answer; } var answer = startAnswer() for(var i = 1; i < array.length; i++){ if (operation == '+') { answer += array[i];} else if (operation == '-') { answer -= array[i];} else if (operation == '*') { answer *= array[i];} else if (operation == '/') { answer /= array[i];} } alert(answer);} arraySum([1, 2, 3, 4], '+'); https://drive.google.com/file/d/1B0n...ew?usp=sharing Понятно, что может ифоф слишком много, можно было както более элегантно сделать. Но это первый код на js с базовыми знаниями. Правильно ли задания решены? Всем спасибо за адекватную критику. |
Цитата:
|
lukas_aka_bo,
Вы не использовали в решениях имеющиеся у вас в заданиях функции add, mul |
и в 4ом задании нужно использовать мeтод slice
https://developer.mozilla.org/ru/doc...ts/Array/slice |
Пример решения задания 2
function fold(array, operation) { // your code goes here var answer = array[0]; for(var i = 1; i< array.length; i++) { answer = operation(answer, array[i]); } return answer; } function add(a, b) { return a + b } function mul(a, b) { return a * b } alert(fold([1, 2, 3, 4], add)); // add(add(add(1, 2), 3), 4) === 10 alert(fold([1, 2, 3, 4], mul)); // 24 |
Часовой пояс GMT +3, время: 19:00. |