首页 > 解决方案 > 为什么reduce函数不输出数组中的项目?

问题描述

我正在从教程中学习 ES6,在玩代码时,我发现了一些我不理解的东西。下面的代码输出“3”。

var primaryColors = [

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

];

var newColors = [];

primaryColors.reduce(function(color, primaryColor){

  return newColors.push(primaryColor.color);

}, []);

为什么 return 语句返回“堆栈”中的数据数?

标签: javascriptarraysreduce

解决方案


为什么reduce函数不输出数组中的项目?

正如 Nenad Vracar 所说,因为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箭头功能

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,我们可以加入解构

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

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


推荐阅读