Задания по 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, время: 10:47. |