下划线.js : _.where() 使用第一个参数,但不适用于第二个参数
underscore.js : _.where() work with first argument but not the second
我是下划线的初学者.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"
(字符串)进行比较。
相关文章:
- 而循环只设置php中输入字段中的第一个值
- 错误:$injector:modulerr模块错误(我的第一个SPA应用程序)
- IE11中的第二个调用取消了第一个Fetch API调用
- Javascript XMLHttpRequest——只有第一个POST请求有效
- 使用javascript或angularjs特定过滤器搜索字符串中第一个img标记的json值
- 将OnClick函数设置为<ul>,最后一个ul是擦除第一个ul-s
- RxJS油门行为;立即获取第一个值
- Angular UI网格:如何通过第一个UI网格中的按钮使第二个UI网格可见
- 选择多个实例中的第一个
- 如何在调用下一个请求之前完成第一个Ajax Get请求
- 用javascript将参数从一个函数传递到另一个函数
- Lodash:返回对象的第一个键,该对象的值(即数组)中有一个给定的元素(即字符串)
- 看起来第一个console.log是'It’不太对
- 与杜兰达尔合作的第一个JavaScript项目.尝试从第三方 API 获取数据
- 节点发布错误对象的第一个“属性”
- 如果在第一个 jsp 页面设置了刷新参数,则会刷新所有 jsp 页面
- 使用 Function.prototype.bind.apply(Obj, args) 将参数传递给对象,只传递第一个元
- 提取第一个url参数,然后将其放入脚本标记中
- 第一个next()调用的参数所在的位置
- 逗号操作符返回参数列表中的第一个值,而不是第二个值