Почему эта функция javascript продолжает возвращать массив как неопределенный? - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть эта простая функция «декодировать», которая принимает 2 массива в качестве входных данных, где второй массив используется для декодирования первого массива.

Начальный вход (не когда функция возвращается) всегдаследующего формата:

  1. 1-й массив имеет длину 1
  2. 2-й массив имеет степень 2, минус 1 (1,3,7,15,...)

Пример ввода: ([4],[0,2,6])

По какой-то причине мой код всегда возвращает неопределенное значение, когда я пытаюсь вернуть декодированный массив.На самом деле, я не могу вернуть ничего, кроме undefined, даже когда я изменяю инструкцию return на что-то вроде «return false».Операторы журнала показывают, что для обоих массивов фиксируются правильные значения, что меня очень смущает.

Вот мой код:

var decode = function(A, B){
    console.log("A: "+A+" B:"+B);
    console.log(B.length);
    if(B.length===0){
        return A;
    }
    var newA = [];
    var newB = [];
    var act = 0;
    for(let i=0; i<A.length; i++){
        newA[act] = A[i] - (B[i]/2);
        newA[act+1] = A[i] + (B[i]/2);
        act+=2;
        newB = B.slice(i+1);
    }
    decode(newA, newB);
}

console.log("Answer is" + decode([4], [0,2,6]));

Это всегда будет возвращать неопределенное значение, независимо от того, что вы делаетеответное заявление.Console.log (А);с другой стороны, дает мне правильное значение для того, что я хочу вернуть.

Большое спасибо за помощь!С благодарностью.

1 Ответ

0 голосов
/ 11 февраля 2019

Проблема в том, что если B.length! = 0, возвращаемое значение отсутствует.Измените

decode(newA, newB);

на

return decode(newA, newB);
...