[英]Underscore reduce returning memo as unidentified
我正在尝试学习Underscore.js的基础知识,更确切地说,是reduce方法。 作为基本练习(在Pluralsight上的视频之后),我从数组中获取多个值,然后尝试将它们简化为单个值。
我敢肯定,一旦弄清楚,这会让我讨厌自己,但是尽管我尽了最大努力,但此刻我还是无法使它工作-我的“ memo”值始终返回为undefined。
编码:
log = function (input) { console.log(input); }
var data = {
people: [
{ name: "Craig", state: "Alive", price: 100 },
{ name: "Bob", state: "Dead", price: 200 },
{ name: "Todd", state: "Dead", price: 300 },
{ name: "Cog", state: "Alive", price: 400 }
]
};
var total = _.reduce(data.people,
function( memo, value ) {
console.log('Memo price: ' + memo.price);
console.log('Value price: ' + value.price);
return { totalPrice: (memo.price + value.price) };
}, 0);
log("Total price: " + total);
结果:value.price返回预期的值(100、200、300、400)memo.price返回为“未定义”,因此合计仅作为对象返回
初始备注值(减少的第三个参数),传递给迭代器函数的第一个参数以及迭代器返回的值都应相互兼容。 但:
0
) {price: <a number>}
{totalPrice: <a number>}
要解决此问题,您只需要保持一致即可。 例如,在所有三种情况下都可以使用纯数字:
_.reduce(data.people,
function( memo, value ) {
console.log('Memo price: ' + memo);
console.log('Value price: ' + value.price);
return memo + value.price;
}, 0);
或者您可以在所有三种情况下使用{price: <a number>}
对象:
_.reduce(data.people,
function( memo, value ) {
console.log('Memo price: ' + memo.price);
console.log('Value price: ' + value.price);
return {price: memo.price + value.price};
}, {price: 0});
log = function (input) { console.log(input); }
var data = {
people: [
{ name: "Craig", state: "Alive", price: 100 },
{ name: "Bob", state: "Dead", price: 200 },
{ name: "Todd", state: "Dead", price: 300 },
{ name: "Cog", state: "Alive", price: 400 }
]
};
var total = _.reduce(data.people,
function( memo, value ) {
console.log('Memo price: ' + memo.price);
console.log('Value price: ' + value.price);
return memo + value.price;
}, 0);
log("Total price: " + total);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.