【问题标题】:How to convert an array of mongoose ObjectIds into an array of strings?如何将 mongoose ObjectIds 数组转换为字符串数组?
【发布时间】:2019-10-28 01:55:53
【问题描述】:

我有一个这样的 ObjectId 数组:

[ 5cd295fbc53f626fd9d70894,
  5cb0624945111f1c5fdf2527,
  5cc290f5b90fc527c1e46efd,
  5cd6737f294e7b6ec3d9420f,
  5cd295fbc53f626fd9d70894,
  5cb0624945111f1c5fdf2527,
  5cc290f5b90fc527c1e46efd,
  5cd6737f294e7b6ec3d9420f,
  5cd295fbc53f626fd9d70894 ]

我需要将每个 Objectid 转换为字符串。

我尝试过 toString() 和 JSON.stringify()。但是 toString() 将每个字符拆分为一个字符串,而 JSON.stringify() 不会影响数组。

实际上,我正在努力寻找数组中的唯一 ID。我尝试了许多函数来获取唯一元素,但它们似乎只适用于数字和字符串,而不适用于 ObjectId。

找到元素的类型后,将其显示为对象。

所以我试图将对象数组转换为字符串数组,以便我可以轻松地使用其中一个函数来获取唯一元素。

预期的输出是这样的:

[ "5cd295fbc53f626fd9d70894",
  "5cb0624945111f1c5fdf2527",
  "5cc290f5b90fc527c1e46efd",
  "5cd6737f294e7b6ec3d9420f",
  "5cd295fbc53f626fd9d70894",
  "5cb0624945111f1c5fdf2527",
  "5cc290f5b90fc527c1e46efd",
  "5cd6737f294e7b6ec3d9420f",
  "5cd295fbc53f626fd9d70894" ]

【问题讨论】:

  • 能否请附上代码?

标签: javascript node.js mongodb mongoose


【解决方案1】:

将ObjectId转为字符串不是答案。

但是如果你只想找到唯一的ObjectId,你可以使用JavaScript中的set对象

根据MDN

Set 对象允许您存储任何类型的唯一值,无论是原始值还是对象引用。

你可以这样做:

const set1 = new Set([your array]);

【讨论】:

    【解决方案2】:

    你可以用地图做到这一点。为数组中的每个元素调用 toString 并将它们作为字符串返回到新数组中。

    请尝试以下代码:

    const stringsArray = objectIds.map(x => x.toString());
    

    在那之后,在数组中获得唯一结果的最有效方法是将它们放在一个 Set 上。所以它看起来像下面这样:

    const uniqueStrings = [...new Set(stringsArray)];
    

    希望对你有帮助!

    【讨论】:

      【解决方案3】:

      您可以使用map 并将String 构造函数作为函数传递,它将每个Objectid 转换为字符串:

      Objectids.map(String) //=> [ "5cd295fbc53f626fd9d70894",
                            //     "5cb0624945111f1c5fdf2527", ...
      

      这不会改变 Objectids。它将返回一个新数组。

      【讨论】:

        猜你喜欢
        • 2021-12-13
        • 1970-01-01
        • 2021-11-20
        • 1970-01-01
        • 2022-01-24
        • 1970-01-01
        • 2017-11-27
        • 1970-01-01
        相关资源
        最近更新 更多