gpt4 book ai didi

javascript - 带下划线或条件的下划线(下划线、lodash 或任何其他解决方案)

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:43:13 26 4
gpt4 key购买 nike

我实现了一个 mixin 以使用 _.where 添加“或”条件

var arr = [{a:1,b:4}, {a:5}, {a:6}, {a:11}];
_.mixin({
or: function(obj,arr,condition){
return _.chain(arr).where(condition).union(obj).value();
}
});

现在我可以像这样使用它了,它的工作原理有点像 sql 查询

_.chain(arr).where({a:1}).or(arr,{a:11,b:3}).or(arr,{a:2}).value();
//returns [{a:1,b:4}]

_.chain(arr).where({a:1}).or(arr,{a:11}).or(arr,{a:2}).value();
//returns [{a:1,b:4},{a:11}]

_.chain(arr).where({a:1}).or(arr,{a:11}).or(arr,{b:4}).value();
//returns [{"a":1,"b":4},{"a":11}] --no duplicates

但我想找到一个更好的方法来调用 _.or({a:1}),现在我必须每次都传递 arr _.or(arr,{a:1}),作为链式“或"获取第一个对象作为先前执行函数的结果。

有没有办法在链式 mixin 函数中获取整个数组?

我希望下面的代码返回与上面的实现相同的结果。 (就像一个完美的 sql 查询)

_.chain(arr).where({a:1}).or({a:11,b:3}).or({a:2}).value();//returns [{a:1,b:4}]

我的主要关注点是通过下划线来获取它,但实际上任何其他方式(如 lodash)甚至其他一些库或解决方案也可以使用。此外,我们也不需要使用链接,我也在尝试使用 compose,但到目前为止还没有成功。我想要一个在最少的线路上完美运行的解决方案。我们鼓励提出任何其他让它变得更好的建议。

jsFiddle

最佳答案

这是一个有趣的问题,感谢你让我注意到 Rahul!

我想出了一个使用下划线辅助函数(尽管没有链接)来解决这个问题的函数。它有 2 个参数,一个是您开始的 array,另一个是包含您要匹配的属性的 propsObj 数组。

JsFiddle

关于javascript - 带下划线或条件的下划线(下划线、lodash 或任何其他解决方案),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36230825/

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