为什么$ .isEmptyObject在这里无效

时间:2016-03-05 06:55:53

标签: javascript jquery

$("#submit").click(function(event) {
        event.preventDefault()

        var data = [{"date_range": $("#date").val()},
                    {"day_of_week":  $("#day_of_week").find('option:selected').text()},
                    {"call_volume": $("#call_volume").find('option:selected').text()},
                    {"number_of_calls": $("#number_of_calls").val()}]

        var info = data.filter(function(item) {return $.isEmptyObject(item)})
        alert(info)
    })

上面的代码出了什么问题?

基本上我试图做的是过滤数据数组中非空的对象。

我的意思是要通过filter的内容的标准是正确的吗?

那为什么上面的代码没有工作呢?

尽管数据数组中的大多数对象都不为空,

警告信息始终为空

1 个答案:

答案 0 :(得分:1)

尝试否定$.isEmptyObject(object)

的结果
var info = data.filter(function(item) {return !$.isEmptyObject(item)});

因为,如果传递的对象不是空的,那么isEmptyObject将返回false,并且您将在callBack的{​​{1}}中返回它。所以数组中的所有元素都被忽略了。

这就是filter的工作方式,

Array.prototype.filter
相关问题