我有一组对象,我将Selected = true
设置为某些客户。
使用_.where
我正在获得一个只有所选客户的新阵列。
是否有任何方法可以获得没有此属性的客户?
我不想将Selected = false
设置为其他客户并通过
_.where(customers, {Selected: false});
非常感谢!
答案 0 :(得分:4)
使用_.reject
_.reject(customers, function(cust) { return cust.Selected; });
文档:http://underscorejs.org/#reject
返回list中的值,不包含真值测试(迭代器)传递的元素。与过滤器相反。
另一个选择,如果您需要这个特定的逻辑:您还可以创建自己的Underscore Mixin:_.mixin
并创建一个_.whereNot
函数并保留_.where
的短语法
答案 1 :(得分:2)
你可以这样做,如果你确定该财产不在那里:
_.where(customers, {Selected: undefined});
如果对象具有Selected: false
您也可以使用可能更好的_.filter
:
_.filter(customers, function(o) { return !o.Selected; });
答案 2 :(得分:2)
我并不完全相反,但您可以轻松使用filter
,这可以让您将函数指定为谓词(或类似地,reject
):
_.filter(customers, function(customer) { typeof customer.Selected == "undefined" });
同样,如果您需要Selected
未定义或 false的客户列表:
_.reject(customers, function(customer) { customer.Selected === true });
答案 3 :(得分:2)
使用.filter方法
_.filter(customers, function(c) {return !c.Selected;});