我有一组对象,我设置Selected = true
了一些客户。使用_.where
我得到一个只有选定客户的新数组。有什么方法可以获取没有这个属性的客户吗?我不想设置Selected = false
其他客户并抓住他们
_.where(customers, {Selected: false});
非常感谢!
我有一组对象,我设置Selected = true
了一些客户。使用_.where
我得到一个只有选定客户的新数组。有什么方法可以获取没有这个属性的客户吗?我不想设置Selected = false
其他客户并抓住他们
_.where(customers, {Selected: false});
非常感谢!
利用_.reject
_.reject(customers, function(cust) { return cust.Selected; });
文档:http ://underscorejs.org/#reject
返回列表中的值,不包含真值测试(迭代器)通过的元素。过滤器的反面。
如果你非常需要这个特定的逻辑,另一个选择:你也可以创建你自己的下划线混合:_.mixin
并创建一个_.whereNot
函数并保持漂亮的简短语法_.where
如果您确定该属性不存在,您可以这样做:
_.where(customers, {Selected: undefined});
如果对象有,这将不起作用Selected: false
您也可以使用_.filter
可能会更好:
_.filter(customers, function(o) { return !o.Selected; });
我没有完全相反的情况,但您可以轻松地使用filter
,它可以让您指定一个函数作为谓词(或类似地,reject
):
_.filter(customers, function(customer) { typeof customer.Selected == "undefined" });
同样,如果您想要一个Selected
未定义或错误的客户列表:
_.reject(customers, function(customer) { customer.Selected === true });
改用 .filter 方法
_.filter(customers, function(c) {return !c.Selected;});