减少Javascript中的回调的第二个参数

时间:2015-12-01 17:18:19

标签: javascript arrays reduce

var reverse = function (list) {
  return list.reduce(function (reversedList, current) {
    return [ current ].concat(reversedList);
  }, []);
};

console.log(reverse([1,2,3,4]));

所以这是用于在Javascript中使用reduce来反转数组。根据{{​​3}}。如果没有提供 initialValue ,则第二个参数(此处为当前)是数组第一个元素之后的第二个元素。但在这种情况下,电流不是第二个元素,而是数组的最后一个元素。为什么会这样?

您可以在控制台上运行此代码,以便某些阵列[1,2,3,4]和当前将返回4。

1 个答案:

答案 0 :(得分:1)

当您执行此操作时,您的代码正在创建一个包含当前项目的新数组:[current] 然后在它之后连接“reversedList”数组。

$ make Exercice_4.19
g++ -std=c++11 -Wall    Exercice_4.19.cpp   -o Exercice_4.19

这是一种奇怪的方式,但我认为这只是为了教育目的。您可以将每个项目添加到数组的开头而不是连接。

var reverse = function (list) {
  return list.reduce(function (reversedList, current) {
    //this creates a new array with just the "current" item in it
    //and then concatenates the "reversedList" array with it.

    console.log("concatenating ", current, "with", reversedList); 
    return [ current ].concat(reversedList);

  }, []);
};

console.log(reverse([1,2,3,4]));

那就是说,如果你只是试图反转一个数组,你可以使用reverse()方法:

 var reverse = function (list) {
  return list.reduce(function (reversedList, current) {
    reversedList.unshift(current);
    return reversedList;
  }, []);
};

console.log(reverse([1,2,3,4]));