向后循环仅打印未定义

时间:2019-06-20 20:32:34

标签: javascript arrays function for-loop

我试图创建一个可以接受数组并向后显示其内容的函数。我无法理解为什么在参数中输入数组时函数调用为何显示为未定义。

var arrayOne = []

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

3 个答案:

答案 0 :(得分:1)

您的问题有误会:

您要实现的是屏幕上的import os import pandas as pd totals = pd.read_csv('filename') band_gaps = totals.groupby(['column1','column2']) band_gaps.info() AttributeError: Cannot access callable attribute 'info' of 'DataFrameGroupBy' objects, try using the 'apply' method type(band_gaps) pandas.core.groupby.generic.DataFrameGroupBy 个元素,而不是console.log个元素。

您的代码

return

不起作用,因为您在var arrayOne = [] function printReverse(arrayOne) { for(var i = arrayOne.length-1; i < 0; i--) { console.log(arrayOne[i]) } } 的代码中使用了错误的运算符。这将在第一次迭代时返回false,因为i < 0将是i,如果上面有任何元素,它将是arrayOne.length

将此部分更改为> 0,您的代码将起作用并在控制台上实际打印值。

但是,如果您确实想拥有一个还原的数组,则应该只使用Array reverse()而不是编写一个函数来返回它。

答案 1 :(得分:0)

所以这里有一些基本原理。如另一个答案所述,i永远不会小于0,因为您在0循环中将其定义为大于for的值。尝试一下类似的东西

编辑:从某种意义上说,注释是正确的,因为该数组将被变异,因此请首先使用扩展运算符添加该数组的副本 同样,对于此返回的undefined,除非您注释掉return语句,否则它应该返回undefined

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);

答案 2 :(得分:-1)

如果希望它返回某些内容,则必须在函数内添加一个返回值,例如

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

但是,就您而言,这没有多大意义。您只能返回一件事,它可以是字符串,整数,数组,对象等等。但是,一旦您的程序命中了一个return语句,它将在返回值后退出函数。