jQuery过滤对象的值与索引不一致

Joe*_*oel 14 javascript jquery

我有一个类似的对象

var obj = { 'Earth': 1, 'Sky': 2, 'Tree': 3, 'Sand': 4 };

我正在尝试使用此基于值进行过滤

$.filter(obj,function(i, value){
  return value>3;
});
Run Code Online (Sandbox Code Playgroud)

然而,这是空的.

预期产出 {'Sand': 4 }

当对象的索引无法一致地处理并且可能变化时,是否有一种按值过滤的方法.

I w*_*ce. 6

试试这样的东西......

function filterObjectProperties(obj, filtercb){
    var ret = {};
    for(var p in obj)
        if(obj.hasOwnProperty(p))
            if(filtercb(obj[p]))
                ret[p] = obj[p];
    return ret;
}

var obj = { 'Earth': 1, 'Sky': 2, 'Tree': 3, 'Sand': 4 };

var newObj = filterObjectProperties(obj, function(val){
    return val > 3;
});
Run Code Online (Sandbox Code Playgroud)

https://jsfiddle.net/dht2L55L/