对于循环阵列混淆

时间:2015-08-13 14:00:06

标签: javascript arrays for-loop

我在课堂上工作,内置编辑器告诉我这个功能返回" a",但我希望它返回" a"," b&#34 ;," C"" d&#34 ;.有人可以解释我在这里不理解的内容吗?

    function chunk(arr) {

  for(var i = 0; i <= arr.length; i++)
  return arr[i];

}

chunk(['a', 'b', 'c', 'd']);``

4 个答案:

答案 0 :(得分:1)

一个函数只能有一个返回值,所以代码在第一次执行return时结束。 return语句被定义为立即退出函数。

返回值可以是数组(或对象),因此如果要返回多个值,可以将它们放在数组中:

function chunk(arr) {
  var result = [];
  for(var i = 0; i <= arr.length; i++) {
    result.push(arr[i] + '!');
  }
  return result;
}

var values = chunk(['a', 'b', 'c', 'd']);

// values now contain ['a!', 'b!', 'c!', 'd!']

答案 1 :(得分:0)

它返回&#39; a&#39;因为return语句本身返回数组中的特定项

return arr[i];//in example above, i is 0
          ^^^

想象一下数组结构如

0 -> a
1 -> b
2 -> c
3 -> d
4 -> e

因此,当您使用索引0进行访问时,会返回a

要返回整个数组,请不要使用索引

return arr;

答案 2 :(得分:0)

你太早回来了:

function chunk(arr) {
    var newArr = [];
    for(var i = 0; i <= arr.length; i++) {
        newArr.push(arr[i]);
    }
    return newArr;
}

这应该有用。

答案 3 :(得分:0)

您应该使用 .map() 方法,该方法创建一个新数组,其结果是在此数组中的每个元素上调用提供的函数。 它更干净。

所以就这样做:

  function chunk(arr) {
    //Map our array and return a new array
    return arr.map(function(elm){
      return elm;
    });

  };

  var a = chunk(['a', 'b', 'c', 'd']);

  console.log(a);
  //Print ["a", "b", "c", "d"]