Undercore findWhere函数,用于查找与条件a或b匹配的元素
Underscore findWhere function to find element match condition a or b
我有一个对象数组
var arr = [{a:1},{a:5}, {a:6},{a:11}];
我想使用下划线findwhere函数来检索满足条件a = 1
或a =11
的对象
类似:
_findWhere(arr, {a:1} || {a:11})
有这样的可能吗??
find的行为类似于findWhere,因为它返回通过搜索条件的第一个项目。使用find,您可以使用谓词来指定搜索条件。
var result = _.find(arr, function(item) {
return item.a == 1 || item.a == 11;
});
您可以对此使用_.filter
var arr = [{a:1}, {a:5}, {a:6}, {a:11}];
_.filter(arr,function(n){return (n.a===1 || n.a===11)});
但有一个更好的解决方案可以帮助您添加任意数量或任意添加。使用_.mixin,您可以创建自己的或功能
var arr = [{a:1}, {a:5}, {a:6}, {a:11}];
_.mixin({
or: function(obj,arr,condition){
return _.chain(arr).where(condition).union(obj).value();
}
});
_.chain(arr).where({a:1}).or(arr,{a:11}).or(arr,{a:2}).value();//returns 2 objects
_.chain(arr).where({a:1}).or(arr,{a:11}).or(arr,{a:5}).value();//returns 3 objects
_.chain(arr).where({a:1}).or(arr,{a:11}).value();//returns 2 objects
var arr2 = [{a:1,b:4}, {a:5}, {a:6}, {a:11}];
_.chain(arr2).where({a:1}).or(arr2,{a:11}).value();//returns 2 objects
对于您的情况,最好使用find
函数。您可以使用作为第二个参数传递给find
方法并检查两个条件的函数:
var arr = [{ a: 1 }, { a: 5 }, { a: 6 }, { a: 11 }];
var elem = _.find(arr, function(e) {
return e.a == 1 || e.a == 11;
});
document.write(JSON.stringify(elem));
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
或者使用纯javascript(ES2015
):
var arr = [{ a: 1 }, { a: 5 }, { a: 6 }, { a: 11 }];
var elem = arr.find(function(e) {
return e.a == 1 || e.a == 11;
});
document.write(JSON.stringify(elem));
您可以使用Array#some
用纯Javascript编写它
var arr = [{ a: 1 }, { a: 5 }, { a: 6 }, { a: 11 }, { a: 11 }],
found = function (array) {
var index;
return arr.some(function (a, i) {
if (a.a === 1 || a.a === 11) {
index = i;
return true;
}
}) && array[index] || undefined;
}(arr);
document.write('<pre>' + JSON.stringify(found, 0, 4) + '</pre>');
相关文章:
- 如何附加<ul><李>元素位于某个特定条件的父元素列表之间
- 正则表达式条件来删除元素
- KnockoutJS:为虚拟元素使用嵌套的条件if语句
- 根据特定条件使用ng显示/ng隐藏来显示/隐藏元素
- Jquery:当两个或多个条件为true时,选择一个元素
- 从json数组中查找满足条件的特定元素的值
- ng重复向一个元素添加条件类
- 如何使用jQuery绕过具有指定类和两个条件的元素的函数
- 如何用d3有条件地移除元素
- AngularJS ng-if指令在移除元素之前,即使条件为false,也会短暂呈现
- 量角器 - 根据条件识别嵌套下拉元素时超时
- 在元素中搜索字符串,然后将其放入条件语句中
- jQuery 查找与条件匹配的元素
- if数组元素在for循环内部有条件
- 如果满足条件,则使用JQuery向元素添加链接
- 如何用angular js对HTML元素的id属性进行条件设置
- 模板中的条件元素
- Undercore findWhere函数,用于查找与条件a或b匹配的元素
- 使用 jQuery 克隆表单,并添加和删除元素条件
- 零元素条件中的错误“;如果“;未捕获的类型错误:无法读取属性'1'为null