const在reduce方法中是未定义的

时间:2017-04-30 12:13:58

标签: javascript ecmascript-6 lodash

avgPrice(data) {
    const min_price = data.min_price,
    max_price = data.max_price;

    console.log(min_price) //has value

    let x = _.reduce(data.custom_pricing, (a, b) => {
        a.min_price = Math.min(a.min_price, b.min_price);
        a.max_price = Math.max(a.max_price, b.max_price);
    }, { min_price:min_price, max_price:max_price });
}

上面的代码出了什么问题?我得到min_price是未定义的错误。但是当我执行console.log时,我的const min_price有价值。

1 个答案:

答案 0 :(得分:2)

你必须从reduce返回(返回a,以便它可以用于下一次迭代)。

let x = _.reduce(data.custom_pricing, (a, b) => {
    a.min_price = Math.min(a.min_price, b.min_price);
    a.max_price = Math.max(a.max_price, b.max_price);

    return a; //<<<<<
}, { min_price:min_price, max_price:max_price });

无突变:

虽然我没有找到原因。

let x = _.reduce(data.custom_pricing, (a, b) => 
    ({ min_price: Math.min(a.min_price, b.min_price), max_price: Math.max(a.max_price, b.max_price) }), // create a new object and return it
    { min_price:min_price, max_price:max_price });