现有字段的比较
Comparison of fields that exist
如果我有一个对象数组,需要在其中找到一些东西,我可以使用下划线/lodash 的find
函数
let part = { id: 'foo' };
_.find(arr, p => p.id === part.id);
这很容易。那么多个属性呢?
let part = { id: 'foo', name: 'part foo' };
_.find(arr, p => p.id === part.id && p.name === part.name);
但请稍等。如果我需要一个函数,它首先通过id
进行比较,然后如果name
存在,则通过name
进行比较,也许通过part
中存在的其他字段进行比较。这样做似乎不对:
_.find(arr, p => {
return p.id === part.id
&& (part.name && p.name === part.name)
&& (part.title && p.title === part.title);
});
如果title
存在而name
不存在,它将无法找到零件。另外,若我有更长的属性列表要比较,我能避免函数体臃肿吗?
试试这个:
return p.id === part.id
&& (!part.name || p.name === part.name)
&& (!part.title || p.title === part.title);
这样做会使它将part
中不存在的任何属性视为匹配,因此它只对存在的属性进行真正的比较。
这种缩写语法还假定part.X
的有效值从不为假。您可以使用使其更安全
return p.id === part.id
&& (!part.hasOwnProperty("name") || p.name === part.name)
&& (!past.hasOwnProperty("title") || p.title == part.title);
您有几个选项。。。。
您可以制作一个专用的比较功能isPartEqual(p, part)
_.find(arr, p => isPartEqual(p, part));
或者您可以创建compareIfExists(p,part,['id','name','title'])
或者,如果"部分"包含您想要匹配的所有字段,则在lodash 中
_.findWhere(arr, part)
相关文章:
- MongoDB-通过比较集合和对象的数组来返回现有字段的数组
- 比较两个输入字段
- javascript计算字段比较算法
- 用于比较日期字段的Javascript
- jQuery-字段值和比较
- Mongo-Aggregate:如何与另一个集合中的字段进行比较
- 比较 angularjs 指令中的两个字段
- Javascript 密码字段比较
- 使用 JavaScript 比较 2 个数组并创建一个新的对象数组,该数组不包含与 id 字段匹配的对象
- 比较两个字段的验证
- MongoDB:将Days字段添加到DB中的Date Type字段中,然后与当前日期进行比较
- 现有字段的比较
- 尝试访问动态生成的输入字段,并将其与长度一致的.json数据进行比较
- 如何将字段数据与其他字段数据进行比较
- 比较并验证输入字段
- jquery验证器比较2个字段的错误
- 创建对象和比较字段时出现Javascript错误
- 将组合框中的值与隐藏字段中的值进行比较
- 如何使用jQuery验证器比较两个字段
- jQuery比较数组输入字段