gpt4 book ai didi

underscore.js - 将 _.filter 和 _.reject 作为单个操作运行,就像 Haskell 的 Data.List.Partition

转载 作者:行者123 更新时间:2023-12-02 09:36:16 25 4
gpt4 key购买 nike

我想根据谓词是否为值返回 truefalse 将 JavaScript 数组中的值分成两个单独的数组。这可以通过使用下划线或 Lo-Dash 的两个操作轻松完成:

var values = [1, 2, 3, 4];
var even = function (num) { return num % 2 === 0; };
var evens = _.filter(values, even);
var odds = _.reject(values, even);

这将对每个值运行谓词两次,这在这里没问题,但如果 values 被替换为更大的数据集,并且如果 even 被替换,则可能会出现问题替换为计算成本更高的谓词。

我查看了 Lo-Dash 的文档,但看不到任何可以在单个操作中完成此操作的内容。我可以手动编写这样的功能,但似乎是一个奇怪的遗漏。我是否缺少这样的功能?

最佳答案

下划线有_.partition :

partition _.partition(array, predicate)

Split array into two arrays: one whose elements all satisfy predicate and one whose elements all do not satisfy predicate.

但 Lo-Dash 似乎(还)没有。你可以使用 groupBy相反:

var partition = _.groupBy(values, function(num) { return num % 2 === 0 });

然后自己将两 block 从partition对象中拉出来;我想这仍然是两个步骤,但只通过 values。当然,这会将 bool 键字符串化,但这应该不是问题。

关于underscore.js - 将 _.filter 和 _.reject 作为单个操作运行,就像 Haskell 的 Data.List.Partition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25987474/

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