Javascript / Jquery - .every()等效于对象操作

时间:2014-10-31 19:41:32

标签: javascript jquery

如何测试像array.every()方法这样的对象?尝试在发送之前检测查询对象中的所有术语是否为空。显然我可以在for循环中编写一个小例程,但我希望有更简洁的方法来实现这一点。

// array - works
var queryArr = [ "", "" ];
if(!queryArr.every(function(el, i, arr) { return el == "" } )) {
    alert("nothing to search");
}

// object - "undefined is not a function"
var queryObj = { term1: "", term2: "" };
if(!queryObj.every(function(el, i, arr) { return el == "" } )) {
    alert("nothing to search");
}

2 个答案:

答案 0 :(得分:1)

您可以通过这种方式实现自己的每一种方法:

Object.prototype.every=function(evalFunction){
    var self=this,
        property;

    if(typeof evalFunction!=='function')
        return evalFunction;

    for(property in self){
        if(self.hasOwnProperty(property) && !evalFunction(self[property], property, self)){
            return false;
        }
    }
    return true;
}

然后你就可以像使用数组一样在对象上使用新的每种方法了但是如果你只想在代码上测试一次,我就会使用进行循环或者robisrob的地图解决方案

答案 1 :(得分:0)

可以使用Map调用数组中每个对象的函数。

http://api.jquery.com/jquery.map/