簡體   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