基于两个属性的带下划线.js的javascript中对象的筛选器和唯一数组
在我的应用程序中,我有这样一个数组:基于两个属性的带下划线.js的javascript中对象的筛选器和唯一数组,javascript,arrays,Javascript,Arrays,在我的应用程序中,我有这样一个数组: var arr=[ {id:1,name:"mohammmad",deny:false}, {id:1,name:"mohammmad",deny:false}, {id:1,name:"mohammmad",deny:true}, {id:2,name:"ali",deny:false}, {id:3,name:"reza",deny:true}, {id:2,name:"ali",deny:true} ]; 现在,我想基于对象的id返回此数
var arr=[
{id:1,name:"mohammmad",deny:false},
{id:1,name:"mohammmad",deny:false},
{id:1,name:"mohammmad",deny:true},
{id:2,name:"ali",deny:false},
{id:3,name:"reza",deny:true},
{id:2,name:"ali",deny:true}
];
现在,我想基于对象的id
返回此数组的唯一集合,但如果集合具有true
的deny
值,则它必须返回具有deny=true
的对象。例如:
{id:1,name:"mohammmad",deny:false},
{id:1,name:"mohammmad",deny:false},
{id:1,name:"mohammmad",deny:true},
它使用id=1
进行过滤,但返回具有deny=true
的对象。
我也在这里创建了一个 使用下划线:
_.chain(arr)
.sortBy(function(d) { return !d.deny })
.uniq(function(d) { return d.id })
.value()
按deny
(首先使用真值)排序,然后在id
上按uniq
排序。下划线保留每个键的第一个匹配值。因此,如果给定的id
的值为deny:true
,则该值将被保留。如果没有,它将使用deny
的任何值保留第一个值
如果存在匹配的ID,但没有对象具有
deny:true
,只有deny:false
,该怎么办?我真正想问的是,我们是否可以删除任何deny:false
的内容并过滤其余内容?因此它返回deny:false
我认为unique不会对您有所帮助,因为当您应用uniq
时,它会过滤重复的内容。