JavaScript中的多字段比较
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript中的多字段比较,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1183字,纯文字阅读大概需要2分钟。
内容图文
![JavaScript中的多字段比较](/upload/InfoBanner/zyjiaocheng/659/212a2d1e58934250bed148998c1cbe3a.jpg)
在给定的searchObject规范下,是否有任何简便的方法可以在以下列表中查找项目?
var list = [
{ id:1, name: "foo", description: "description 1" },
{ id:2, name: "bar", description: "description 2" },
{ id:3, name: "baz", description: "description 3" },
];
var searchObject = { id: 2, name: "bar" };
searchObject不一定具有列表中项目的所有属性.我需要属性之间的运算符为AND(id == 2&& name ==“ bar”).以下是我想出的. javascript中有什么可以做到这一点的吗?
for (var i in list) {
var found = true;
for (var p in searchObject) {
if (list[i][p] !== searchObject[p]) {
found = false;
break;
}
}
if(found) return list[i];
}
解决方法:
不,没有本机的方法.某些人可能更喜欢以下内容,因为它具有更多的JavaScript功能,但它当然不具备原始版本所具有的出色浏览器支持.
var matches = list.filter(function(arrElem){
return Object.keys(searchObject).every(function(prop){
return searchObject[prop] === arrElem[prop];
});
});
请注意,这将返回具有所有匹配项的数组,而不仅仅是像您这样的第一个匹配项.还要注意,与您的不同,尽管您可能不想搜索继承的属性,但这不会测试searchObject上的继承的可枚举属性.
ps,其中许多“我希望js拥有更好的X方式”的愿望都可以通过underscore.js来满足.特别是,您追求的是findWhere方法:
var match = _.findWhere(list, searchObject);
内容总结
以上是互联网集市为您收集整理的JavaScript中的多字段比较全部内容,希望文章能够帮你解决JavaScript中的多字段比较所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。