数组向后获取元素

时间:2017-05-22 03:04:39

标签: javascript arrays

我正在创建一个函数,该函数返回一个包含所有元素的数组,直到但不包括给定索引处的元素。

function getElementsUpTo(array, n) {
      var output = [];
      for (var i=n; i < array.length; i++){
        output.push(array[i]);
      }
      return output;
    }

    var output = getElementsUpTo(['a', 'b', 'c', 'd', 'e'], 3) 
    console.log(output); // --> must be['a', 'b', 'c'] but its displaying [c, d, e]

正如您所看到的那样,它必须返回[&#39; a&#39;,&#39; b&#39;,&#39; c&#39;]但它显示[c,d,e]。 有什么想法吗?

4 个答案:

答案 0 :(得分:3)

为什么不在javascript中使用切片?这非常方便。

你的起始指数是'n',即你在这里出错了很明显。 使用你的逻辑

function getElementsUpTo(array, n) {
      var output = [];
      for (var i=0; i < n; i++){
        output.push(array[i]);
      }
      return output;
    }

    var output = getElementsUpTo(['a', 'b', 'c', 'd', 'e'], 3) 
    console.log(output);

使用切片方法,它更简单

arr = ['a','b','c','d','e']
var output = arr.slice(0,3)

相同的输出,但只有2行

答案 1 :(得分:1)

您从需要停留的位置开始,而不是从数组的开头开始。此外,您需要在n

之前停在索引处
function getElementsUpTo(array, n) {
      var output = [];
      for (var i=0; i < n; i++){ //need to start at index 0, and stop at index n-1
        output.push(array[i]);
      }
      return output;
    }

    var output = getElementsUpTo(['a', 'b', 'c', 'd', 'e'], 3) 
    console.log(output); // --> ['a', 'b', 'c'] 

答案 2 :(得分:1)

罪魁祸首就是这条线:

for (var i=n; i < array.length; i++){ // ... rest of code

似乎你的函数返回第一个第n个元素。因此索引必须从第一个开始,即0。循环条件应为i < n,以便循环停止在第n个循环。这意味着最后一个循环将是第(n-1)个循环,这很好,因为我们始终从0开始。所以最终的代码应该是这样的:

for (var i = 0; i < n; i++){

答案 3 :(得分:1)

您使用n作为阅读的起点。 你想要的东西是这样的:

function getElementsUpTo(array, n) {
      var output = [];
      for (var i=0; i < n; i++){
        output.push(array[i]);
      }
      return output;
    }

供将来参考:

1)数组项从数组[0]开始,然后到数组[length-1]

2)你放入的'i'获取数组中该位置的项目。

ie:array [0] =&gt;在你的情况下'a'。

因此,从i = n开始,你告诉数组从位置n开始,并且i&gt; array.length告诉它继续直到结束。 (记住数组[array.length]会抛出一个越界错误,因为数组从0开始,而不是从1开始。)