【问题标题】:Lodash union of arrays of mongoose ObjectIdmongoose ObjectId 数组的 Lodash 联合
【发布时间】:2017-09-14 13:49:25
【问题描述】:

我有 2 个包含 ObjectId 项的数组:array1array2

我想在这两个数组之间创建一个联合。为此我正在运行:

let res = _.union(array1, array2);

res 包含重复的 ObjectId。

我该如何解决这个问题?

【问题讨论】:

    标签: node.js mongoose union lodash


    【解决方案1】:

    如果您正在查看具有“objectIDs”字符串的两个不同数组,您可以使用concat,然后使用uniq 删除重复项。不要忘记在 Lodash 链的末尾运行 valueOf 来调用它来执行。

    以下是一个说明性示例:

    let array1 = ['42142141221421d', '9999'];
    
    let array2 = ['s421421412412fef3', '42142141221421d', '1234'];
    
    const res = _(array1)
           .concat(array2)
           .uniq()
           .valueOf();
    
    console.log(res);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>

    【讨论】:

    • 我的数组中没有对象,只有 ObjectIds。例如:array1 = ["s421421412412fef3", "42142141221421d"]。这是其中唯一的字段
    • 抱歉耽搁了@YoniMayer。查看上面的新答案;它应该可以解决您的问题。
    【解决方案2】:

    您可以尝试使用 _.uniqBy(res, 'ObjectId');这应该删除新 res 数组中的重复 objectId

    let newRes = _.uniqBy(res, 'ObjectId');
    

    【讨论】:

      猜你喜欢
      • 2015-06-01
      • 2016-06-13
      • 2015-05-02
      • 2017-11-22
      • 2021-03-03
      • 2019-07-18
      • 2022-12-12
      • 2017-04-20
      • 2018-08-05
      相关资源
      最近更新 更多