为什么reduce函数输出数组中没有项?

时间:2018-05-22 17:10:47

标签: javascript arrays reduce

我从教程中学习ES6,在玩代码时,我找到了一些我不理解的东西。以下代码输出'。

var primaryColors = [

  { color: 'red' },
  { color: 'yellow' },
  { color: 'blue' },

];

var newColors = [];

primaryColors.reduce(function(color, primaryColor){

  return newColors.push(primaryColor.color);

}, []);

为什么return语句返回" stack"中的数据no?

1 个答案:

答案 0 :(得分:12)

  

为什么reduce函数输出数组中没有项?

As Nenad Vracar said,因为push返回数组中的项数,reduce返回回调返回的最后一个值。

reduce不适合这项工作。 map是:

var newColors = primaryColors.map(function(primaryColor) {
    return primaryColor.color;
});



var primaryColors = [
  { color: 'red' },
  { color: 'yellow' },
  { color: 'blue' },
];
var newColors = primaryColors.map(function(primaryColor) {
    return primaryColor.color;
});
console.log(newColors);




或使用ES2015 arrow function

var newColors = primaryColors.map(primaryColor => primaryColor.color);



var primaryColors = [
  { color: 'red' },
  { color: 'yellow' },
  { color: 'blue' },
];
var newColors = primaryColors.map(primaryColor => primaryColor.color);
console.log(newColors);




如果我们正在进行ES2015,我们可以投入destructuring

var newColors = primaryColors.map(({color}) => color);



var primaryColors = [
  { color: 'red' },
  { color: 'yellow' },
  { color: 'blue' },
];
var newColors = primaryColors.map(({color}) => color);
console.log(newColors);