我正在尝试使用grep来过滤
JavaScript对象,如下所示:
var options = { 5: { group: "2",title: "foo" },9: { group: "1",title: "bar" } }; var groups = $.grep(options,function(e){ return e.group == 2 });
我得到空的结果,我猜这是与封闭对象的非顺序键有关.任何想法如何解决这个问题?
更新
我尝试了几种不同的grep方法,包括使用
for (key in option)
grep on选项[key],但我无法让他上班.最后我走了一条不同的路线,如图所示:
var option_ids = new Array(); for (key in option) { if ( option[key]['group'] == 2 ) option_ids.push(option[key]['id']); }
解决方法
你不能
grep超过一个对象,并期待一个合理的结果.但是,您可以覆盖数组,因此我们只需要使用Object.keys获取一个键列表:
$.grep(Object.keys(options),function (k) { return options[k].group == 2; }) //=> ["5"]