我是underscore.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 });
当我尝试执行console.log(data_res)时,它等于[] ... 当我只使用带有vag_id参数的_.where()时,它可以正常工作。
不知道问题出在哪里......
答案 0 :(得分:1)
来自DOM节点的vag_id
是一个数字。
将数据更改为字符串将使其正常工作。
下划线where()卸载到filter()
和matches()
,这就是类型重要的原因。
答案 1 :(得分:1)
这很好用:
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 annotated source,您会发现_.where
使用_.matches
来发出严格的相等性检查(===
)。您的问题可能是不匹配的类型,例如将6
(数字)与"6"
(字符串)进行比较。