gpt4 book ai didi

javascript - 基于两个属性,使用 underscore.js 在 javascript 中过滤和唯一对象数组

转载 作者:行者123 更新时间:2023-12-02 17:06:01 24 4
gpt4 key购买 nike

在我的应用程序中,我有一个像这样的数组:

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 返回该数组的唯一集合,但如果集合具有 denytrue 值,则它必须返回具有 deny=true 的对象。例如:

 {id:1,name:"mohammmad",deny:false},
{id:1,name:"mohammmad",deny:false},
{id:1,name:"mohammmad",deny:true},

它使用id=1进行过滤,但返回具有deny=true的对象。我还创建了一个 jsbin这里 。

最佳答案

使用下划线:

_.chain(arr)
.sortBy(function(d) { return !d.deny })
.uniq(function(d) { return d.id })
.value()

deny 排序(首先是 true 值),然后按 id 排序。下划线的implementation of uniq保留每个键的第一个匹配值。因此,如果给定的id具有deny: true的值,则该值将被保留。如果没有,它将保留第一个值与任何 deny 值。

JSFiddle

关于javascript - 基于两个属性,使用 underscore.js 在 javascript 中过滤和唯一对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25238129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com