![](/img/trans.png)
[英]how to use variable for property in indexOf inside map function in Javascript
[英]How to use a function inside an javascript Map Object
我試圖理解 javascript 中的Maps對象,以及如何在應用程序中使用它們,但是有些東西我無法理解,它讓我想到了這個問題,這是我的例子
const myMap = new Map();
myMap.set('Name', 'John Doe')
.set(1, function sayHello(user){ console.log(`Hello ${user}`)})
myMap.get('Name'); // output John Doe
myMap.get(1); // output [function: sayHello]
如您在上面看到的,我可以在 Map 內設置function
我很困惑,我將不勝感激任何解釋
您存儲在 map 中的是 function object。 為了更好地理解它,請查看以下代碼片段以觀察sayHello
和sayHello("World")
之間的區別。 前者是 function object 后者是調用。
const sayHello = (user) => console.log(`Hello ${user}`) console.log(sayHello); sayHello("World");
您會發現.get
會返回 function object。 要查看它的實際效果,您需要使用()
調用它。
myMap.get(1)("World");
除其他外,地圖可以幫助您組織 function 對象,並且可以說具有更具可讀性的代碼。 為了比較,請檢查以下實現。
function calculator(operation, a, b) { if (operation === "add") { return a + b; } else if (operation === "subtract") { return a - b; } else if (operation === "multiply") { return a * b; } } console.log(calculator("add", 5, 10)); console.log(calculator("subtract", 5, 10)); console.log(calculator("multiply", 5, 10));
function calculator(operation, a, b) { const operations = new Map([ ["add", (a, b) => a + b], ["subtract", (a, b) => a - b], ["multiply", (a, b) => a * b], ]); return operations.get(operation)(a, b); } console.log(calculator("add", 5, 10)); console.log(calculator("subtract", 5, 10)); console.log(calculator("multiply", 5, 10));
1.`myMap.get (1)(用戶名)
2.幾個:函數是定義行為的對象。 您可以將它們作為回調、轉換過濾器等參數傳遞...將它們存儲在 Map 或普通 object 中只是通過某些鍵訪問時獲得更快訪問的問題。
3.很多。 您不僅可以將函數存儲在地圖中,還可以存儲整個類,即使在大多數情況下,使用常規 object 會更方便(並且幾乎同樣有效)。
關鍵是永遠不要為某件事找到用例,而是將那件事放在你的工具箱中,以便在必要時能夠使用它。 在這種情況下,當您有一組足夠大的鍵-功能對時。
提示:如果您對更多用例感興趣,請搜索函數式編程的東西。
您需要通過傳遞如下參數來調用 function:
myMap.get(1)("user");
如果您想在 map 內使用function (如上設置),則使用如下: myMap.get(1)('name')
Map 接受任何密鑰類型
如果對象的鍵不是字符串或符號,則 JavaScript 會隱式將其轉換為字符串。
相反,map 接受任何類型的鍵:字符串、數字、boolean、符號。 此外,map 保留了密鑰類型。 這是地圖的主要好處。
以及更多...
記住::用 Maps 調試是痛苦的,然后是對象
我希望這個答案對你有所幫助。 如果您有任何問題或疑問,請發表評論,如果您認為答案有用,請不要忘記將答案標記為已接受,因為它對正在尋找相同問題答案的其他人會有所幫助。 祝你有美好的一天!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.