【问题标题】:How to use lodash unionBy in a for loop to pass arguments dynamically?如何在 for 循环中使用 lodash unionBy 动态传递参数?
【发布时间】:2021-08-09 17:00:17
【问题描述】:

由于许多并发请求,我正在尝试合并来自服务器的未知数量的数组。我还需要删除重复项。数组中的每个元素都是一个 json 对象。

我发现 lodash 有这个 unionBy 方法,它将数组作为参数,我还可以传递 iteratee 例如 "x" 并根据 "x" 删除重复项。这很酷。

但是,看起来我必须手动将数组参数传递给 unionBy 才能使其工作,但问题是,首先我不知道我会从请求中得到多少,其次我最终可能会得到 50 个或更多的数组,显然这不是他们应该工作的方式。

我基本上是在尝试这样做,其中result 是所有请求的结果,并且是一个包含这些请求响应的数组:

for(let i = 0;  i < result.length; i++){
    final = _.unionBy(result[i].data.offers, result[i+1].data.offers, ... , "id");
}

当然这不是它的工作原理,我想知道是否有人知道如何在上面的循环中传递参数?

【问题讨论】:

    标签: javascript node.js lodash


    【解决方案1】:

    您可以使用Array#map 获取您想要的所有值,然后使用spread syntax 将它们传递给unionBy

    _.unionBy(...result.map(x => x.data.offers), "id");
    

    【讨论】:

    • 太棒了,正是我需要的,谢谢
    • @Suren 没问题。
    • @Suren 如果这解决了您的问题,请考虑accepting它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    相关资源
    最近更新 更多