For循环数组混乱



我在一个类中工作,内置的编辑器告诉我这个函数返回"a",但我希望它返回"a","b","c","d"。谁能解释一下我不明白的地方?

    function chunk(arr) {
  for(var i = 0; i <= arr.length; i++)
  return arr[i];
}
chunk(['a', 'b', 'c', 'd']);``

函数只能有一个返回值,因此代码在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!']

你回来得太早了:

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

返回'a',因为返回语句本身返回数组中的特定项

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

假设数组结构为

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

因此,当索引为0时,返回a

返回整个数组,不带索引

return arr;

您应该使用.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"]

最新更新