チュートリアルからES6を学んでいて、コードで遊んでいると、理解できないことがわかりました。以下のコードは「3」を出力します。
var primaryColors = [
{ color: 'red' },
{ color: 'yellow' },
{ color: 'blue' },
];
var newColors = [];
primaryColors.reduce(function(color, primaryColor){
return newColors.push(primaryColor.color);
}, []);
returnステートメントが「スタック」内のデータの数を返すのはなぜですか?
なぜ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);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加