JSON对象上的.grep

use*_*217 11 jquery json

我正在尝试使用grep来过滤Javascript对象,如下所示:

var options = { 
    5: {
        group: "2",
        title: "foo"
    },
    9: {
        group: "1",
        title: "bar"
    }
};

var groups = $.grep(options, function(e){ return e.group == 2 });
Run Code Online (Sandbox Code Playgroud)

我得到空的结果,我猜它与封闭对象的非顺序键有关.任何想法如何解决这一问题?

更新

我尝试了几种不同的grep方法,包括使用

for (key in option) 
Run Code Online (Sandbox Code Playgroud)

选择[关键]但我无法让他上班.最后我走了一条不同的路线,如下所示:

var option_ids = new Array();
for (key in option) {
    if ( option[key]['group'] == 2 ) option_ids.push(option[key]['id']);
}
Run Code Online (Sandbox Code Playgroud)

jmd*_*din 22

你不能grep一个对象,并期望一个理智的结果.但是,你可以grep在一个数组上,所以我们只需要获得一个键列表Object.keys:

$.grep(Object.keys(options), function (k) { return options[k].group == 2; })
//=> ["5"]
Run Code Online (Sandbox Code Playgroud)