繁体   English   中英

如何将猫鼬ObjectId数组转换为字符串数组?

[英]How to convert an array of mongoose ObjectIds into an array of strings?

我有一个像这样的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" ]

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

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

这不会使Objectid发生突变。 它将返回一个新数组。

您可以使用地图来完成。 为数组中的每个元素调用toString,并将它们作为字符串返回到新数组中。

请尝试以下代码:

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

之后,在数组中获得唯一结果的最有效方法是将它们放在Set上。 因此,它看起来如下所示:

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

希望能帮助到你!

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

但是,如果您只想查找唯一的ObjectId,则可以在JavaScript中使用set对象

根据MDN

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

你可以做:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM