簡體   English   中英

將函數數組轉換為字符串數組

[英]Convert array of functions to array of strings

假設我有一個函數數組:

let myArray = [foo, bar, baz];

我想將其轉換為具有函數名稱的字符串數組:

let myArrayAsStrings = ['foo', 'bar', 'baz'];

我怎樣才能做到這一點?

我試過做

myArray.map(fn => fn.name)

但是我的 babel 配置是我認為修改了函數名稱,因此不能保證名稱相同。

想知道是否有某種我不知道的“將 var 名稱轉換為字符串”的方法?

似乎工作正常,只需在最后添加toString()並將其推入數組

 var foo = function() { console.log("Foo"); }; var bar = function() { console.log("bar"); }; var baz = function() { console.log("baz"); }; let myArray = [foo, bar, baz]; let myArrayAsStrings = []; myArray.map(fn => myArrayAsStrings.push(fn.name.toString())); console.log(myArrayAsStrings);

目前尚不清楚foobarbaz是普通函數( function foo() {} )、未命名函數( var foo = funtion () {} )還是箭頭函數(只能是匿名的)。 fn.name僅適用於第一種情況,其他兩個沒有名稱。

從理論上講,這可能是一種解決方法:

var myArrayAsStrings = Object.keys({ foo, bar, baz });

這將首先將每個函數存儲為一個屬性,然后我們可以從對象中提取屬性名稱作為鍵數組。 此解決方案的缺點是無法保證訂單。

但是,如果存在某種丑化,那么代碼中的原始名稱將丟失。

編輯:這個答案假設有一個變量數組(如標題所說),而不是一個函數數組:

一個單行解決方案:

myArray.toString().split(",")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM