Печать только в обратном цикле не определена - PullRequest
0 голосов
/ 20 июня 2019

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

var arrayOne = []

function printReverse(arrayOne) {
    for(var i = arrayOne.length-1; i < 0; i--) {
        console.log(arrayOne[i])
    }
}

Ответы [ 3 ]

1 голос
/ 20 июня 2019

Ваш вопрос неверно истолкован:

То, чего вы хотите достичь, - это console.log элементов на экране, а не return ничего.

Ваш код

var arrayOne = []

function printReverse(arrayOne) {
    for(var i = arrayOne.length-1; i < 0; i--) {
        console.log(arrayOne[i])
    }
}

Не работает, потому что в вашем коде неверный оператор на i < 0. Это вернет false на первой итерации, потому что i будет arrayOne.length, что будет > 0, если на нем есть какой-либо элемент.

Измените эту часть на i >= 0, и ваш код будет работать и фактически выведет значения на консоль.

Однако, если вы действительно хотите иметь обращенный массив, вам следует просто использовать Array reverse () вместо написания функции для его возврата.

0 голосов
/ 20 июня 2019

так что есть некоторые основы, которые там есть.как указано в другом ответе, i никогда не будет меньше 0, потому что вы определяете его как значение, большее 0 в цикле for.Попробуйте что-то вроде этого

РЕДАКТИРОВАТЬ: комментарии верны в том смысле, что массив будет видоизменяться, поэтому сначала сделайте копию массива, которую я добавил, используя оператор распространения.undefined - должен возвращать undefined, если вы не закомментируете оператор return

const arrayOne = [];

function printReverse(array) {
    if (!Array.isArray(array) && array.length === 0 ) {
        return 'The array is empty';
    }

    const arrCopy = [...array];

    // technically you could just reverse it
    // if you return it you have to assign it to someone on the function call

    // return arrCopy.reverse();

    // if you want to log the reversed array you could also
    // console.log(arrCopy.reverse());

    // if you want to reverse it then log each single index
    // arrCopy.reverse().forEach(function(item) {
    //     console.log(item);
    // })
}

// if you were to just return the reversed array you would have to assign it to a variable
// this is just an example and wouldnt technically work because arrayOne is empty
// also if you use this YOU HAVE TO RETURN THE ARRAY COPY
// const reversedArray = printReverse(arrayOne);
0 голосов
/ 20 июня 2019

Если вы хотите, чтобы он что-то возвращал, вы должны добавить возврат в функцию, такой что

function printReverse(arrayOne) {
    for(var i = arrayOne.length-1; i < 0; i--) {
        console.log(arrayOne[i]);
    }
    return "";
}

Однако, в вашем случае, это не имеет большого смысла.Вы можете вернуть только одну вещь, будь то String, int, array, object, что угодно.Но как только ваша программа выполнит один оператор return, она закроет функцию после возврата значения.

...