我有一个这样的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" ]
答案 0 :(得分:1)
您可以使用map并将String构造函数作为函数传递,该函数会将每个Objectid转换为字符串:
Objectids.map(String) //=> [ "5cd295fbc53f626fd9d70894",
// "5cb0624945111f1c5fdf2527", ...
这不会突变Objectid。它将返回一个新数组。
答案 1 :(得分:1)
您可以使用地图来完成。为数组中的每个元素调用toString,并将它们作为字符串返回到新数组中。
请尝试以下代码:
const stringsArray = objectIds.map(x => x.toString());
在那之后,获得数组中唯一结果的最有效方法是将它们放在Set上。因此它看起来如下所示:
const uniqueStrings = [...new Set(stringsArray)];
希望有帮助!
答案 2 :(得分:0)
将ObjectId转换为字符串不是答案。
但是,如果您只想查找唯一的ObjectId,则可以在JavaScript中使用 set 对象
根据MDN:
通过Set对象,您可以存储任何类型的唯一值,无论是原始值还是对象引用。
您可以这样做:
const set1 = new Set([your array]);