簡體   English   中英

如何在 javascript Map Z497031794414A5524435F90151AC35B 中使用 function

[英]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

  1. 我該如何使用 function?
  2. 在 Map 中設置function有什么意義?
  3. 有用例嗎?

我很困惑,我將不勝感激任何解釋

您存儲在 map 中的是 function object。 為了更好地理解它,請查看以下代碼片段以觀察sayHellosayHello("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");
  1. 如果您想在 map 內使用function (如上設置),則使用如下: myMap.get(1)('name')

  2. Map 接受任何密鑰類型

如果對象的鍵不是字符串或符號,則 JavaScript 會隱式將其轉換為字符串。

相反,map 接受任何類型的鍵:字符串、數字、boolean、符號。 此外,map 保留了密鑰類型。 這是地圖的主要好處。

  1. 在某些特定的用例中, map贏得了對象競賽:
  • Map 可以包含任何數據類型的鍵,它可以是對象、整數、字符串、boolean、函數或 arrays。 但在 Objects 中,鍵必須始終是字符串或符號。
  • Map 是有序且可迭代的,而對象是非有序且不可迭代的
  • 與檢查對象相比,檢查 Map 中的條目數非常容易。
  • Map 繼承自 Map.prototype。 這提供了各種實用功能和屬性,這使得使用 Map 對象變得更加容易
  • 在這種情況下,通過將 JavaScript 標識符寫為 object 的鍵名(例如,toString、構造函數等),可能會意外覆蓋原型繼承的屬性,請使用 Maps
  • Another object cannot be used as key of an object, so no extra information can be written for an object by writing that object as key of another object and value of that another object will contain the extra information but this is possible in the case of Maps

以及更多...

記住::用 Maps 調試是痛苦的,然后是對象

我希望這個答案對你有所幫助。 如果您有任何問題或疑問,請發表評論,如果您認為答案有用,請不要忘記將答案標記為已接受,因為它對正在尋找相同問題答案的其他人會有所幫助。 祝你有美好的一天!

暫無
暫無

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

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