如何将一个由mongoose ObjectIds组成的数组转换为一个由字符串组成的数组?

3

I have an array of ObjectIds like this:

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

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

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

实际上,我正在查找数组中的唯一Id。我尝试了许多函数来获取唯一元素,但它们似乎只能处理数字和字符串,而不能处理ObjectIds。

在查找元素类型时,它显示为对象。

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

期望的输出应该是这样的:

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

请问您能否包含代码? - Abhishek Anand
3个回答

5
你可以使用map完成这个任务。对数组中的每个元素都调用toString方法,然后将它们作为字符串返回一个新的数组。
例如:
const stringsArray = objectIds.map(x => x.toString());

如果要在数组中获得唯一的结果,最有效的方法是将它们放在一个Set中。代码如下所示:

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

2

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

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

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

0

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

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

根据MDN

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

您可以执行以下操作:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接