数组缩减过滤器无法使用动态值

时间:2018-01-17 21:50:47

标签: javascript jquery post jquery-ui-slider

我正在编写有滑块的代码,当滑块值发生变化时,我想进行api调用并获得结果。这是我的代码。

function alertValues() {
    var alcohol, sulphate, sulphur;
    //Or
    if ($("#sliderValueAlcohol").val()) {
        alcohol = $("#sliderValueAlcohol").val();
    }
    if ($("#sliderValueSulphate").val()) {
        sulphate = $("#sliderValueSulphate").val();
    }
    if ($("#sliderValueSulphur").val()) {
        sulphur = $("#sliderValueSulphur").val();
    }
    if (alcohol && sulphate) {
        var idString = sulphate + "";
        var id = 1;

        console.log(typeof id);
        $.ajax({
            type: 'post',
            url: 'https://thcj3oq32b.execute-api.us-east-1.amazonaws.com/prod/getsimulation',
            data: JSON.stringify({
                "targetState": "7"
            }),
            /* etc */
            success: function (jsondata) {
                var arr2 = jsondata;
                var result = arr2
                    .filter(function (objs) {
                        return ((objs.find((obj) => obj.ingredients === "sulphate").min <= id) && (objs.find((obj) => obj.ingredients === "sulphate").max >= id) && (objs.find((obj) => obj.ingredients === "alcohol").max == 14));
                    })
                    .reduce(function (a, b) {
                        return a.concat(b);
                    });

                console.log(JSON.stringify(result[0].target_state));

            },
            error: function () {
                alert("error");
            }
        })
    }
}

当我传递var id = parseFloat(idString);而不是静态数字时,我得到的错误是Uncaught TypeError: Reduce of empty array with no initial value。无法理解我哪里出错了。请让我知道如何解决这个问题。

由于

1 个答案:

答案 0 :(得分:1)

您忘记初始化reduce操作中的值。添加空数组初始值[]