2015-10-13 6 views
-2

Я пытаюсь решить эту проблему с кодированием и хочу знать, почему мой код не работает. Пожалуйста, дайте мне знать, в чем проблема, и предложите альтернативное решение.Вычитание из массива, вызов кодирования

Вот вопрос: Создать функцию под названием «reversedLooper», что, когда передается массив будет цикл через него в обратном направлении и вычитают 2 от последнего элемента 1 от второго до последнего, 0 от третьего по последний, добавьте один к четвертому последнему, добавьте от 2 до пятого к последнему и т. д., пока он не достигнет фронта массива. Возвращает список, когда вы сделали

Вот мое решение

var arr = [2, 3, 3, 5, 7, 19]; 
var difference = []; 
var arr3 = []; 

//the function below is working correctly in the way I intend... 

function arrayCreator (arr3) { 
    var i; 
    for(i = arr.length - 3; i >= -2; i--) { 
     arr3.push(i); 
    } 
    return arr3; 
} 


function reversedLooper (arr) { 
    var i; 
    for(i=0; i< arr.length; i++) { 
     var pusher = arr[i] - arr3[i]; 
     difference.push(pusher); 
    } 

    return difference; 
} 

console.log(reversedLooper(arr)); 

// answer should be [5, 5, 4, 5, 6, 17] in this case 
+0

Что вывод, что вы получаете? – abagh0703

+1

вы не зацикливаетесь от него назад в reverseedLooper. Также вы ссылаетесь на arr3, который пуст. А что такое arrayCreator? Вы уверены, что старались изо всех сил? – ergonaut

+0

wow почему все пустые голоса? Я новичок в этом, но не думал, что это был плохой вопрос. –

ответ

1

Вы можете создать ДОПОЛНИТЕЛЬНОЕ переменную начиная с 2 и декремента его каждой итерации, посмотрите:

function reversedLooper(arr) { 
 
    for (var i = arr.length - 1, numToSum = 2; i >= 0; i--, numToSum--) { 
 
    arr[i] = arr[i] - numToSum; 
 
    } 
 
} 
 

 
var arr = [2, 3, 3, 5, 7, 19]; 
 
reversedLooper(arr); 
 
document.write(arr);

+0

спасибо, что имеет большой смысл! –

3

Вы можете использовать функцию map() и reverse() функции:

count = -3; 
finalArray = [2, 3, 3, 5, 7, 19] 
       .reverse() 
       .map(function (obj) { 
        count++; 
        return obj + count; 
       }) 
       .reverse(); 

Исполнительные на консоли дает следующее:

» count = -3; [2, 3, 3, 5, 7, 19].reverse().map(function (obj) { count++; return obj + count; }).reverse() 
« [5, 5, 4, 5, 6, 17] 

Snippet

count = -3; 
 
final = [2, 3, 3, 5, 7, 19].reverse().map(function(obj) { 
 
    count++; 
 
    return obj + count; 
 
}).reverse(); 
 
alert(final.join());

1

Ваш код просто объявить т функция arrayCreator без вызова. А также var pusher = arr[i] + arr3[i]; Отредактируйте эти две вещи, и ваш код будет работать.

+0

эй, ты прав, сейчас это работает, спасибо большое. noob ошибка моего не вызывает функцию. но спасибо, что нашли время, чтобы посмотреть мой код и посмотреть, что я делаю неправильно –

+0

@ LukeSchunk мое удовольствие. – AndyHu

0

изменение функции reversedLooper к:

function reversedLooper(arr){ 
    var x=-2; 
    for(var i=arr.length-1;i>=0;i--) 
    { 
    arr[i]+=x; 
    x++; 
    } 
    return arr; 
} 
Смежные вопросы