[英]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);
目前尚不清楚foo
、 bar
和baz
是普通函數( 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.