我是下划线的初学者.js,我正在尝试使用 _.where() 来过滤我的数据,有两个参数。
我的json data.foo看起来像这样:
{"foo":[
{"vag_id":"6","ind_id":"ade","res":"76.56","tx":"66"},
{"vag_id":"6","ind_id":"aha","res":null,"tx":null}
...
]}
我的代码是这样的:
ind_id = $('#fk_ind_id').val(); // return 'ade'
vag_id = $('#fk_vag_id').val(); // return 6
data_res = _.where(data.foo, { vag_id : vag_id , ind_id : ind_id });
当我尝试做控制台.log(data_res)时,它等于 [] ...当我只使用带有vag_id参数的 _.where() 时,它可以正常工作。
看不出问题出在哪里...
DOM 节点的vag_id
是一个数字。根据数据将其更改为字符串将使其正常工作。
Underscore的where()卸载到filter()
和matches()
这就是为什么类型很重要。
这工作正常:
var data = {
foo: [
{"vag_id":"6","ind_id":"ade","res":"76.56","tx":"66"},
{"vag_id":"6","ind_id":"aha","res":null,"tx":null}
]
};
var data_res = _.where(data.foo, { vag_id : '6' , ind_id : 'ade' });
console.log(JSON.stringify(data_res));
如果你查看UnderscoreJS注释源代码,你会发现_.where
使用_.matches
发出严格的相等性检查(===
)。您的问题可能是不匹配的类型,例如将6
(数字)与"6"
(字符串)进行比较。