簡體   English   中英

在javascript中迭代Map對象時,有沒有辦法訪問索引值?

[英]Is there a way to access to an index value while iterating over a Map object in javascript?

在我的項目中,我必須將Javascript對象轉換為名為mapResultsMap對象。 經過一些轉換(切出前兩個值)之后,我現在想遍歷此集合以使用以下語法呈現一些列表項。

  • {鍵1}:{} VALUE1
  • {KEY2}:{} VALUE2

事實是,我還有一個名為resultsKey的數組, 其中包含要用作每個列表項的{keys}的字符串。 因此,可以說我的Map對象和字符串數組如下所示:

mapResults = 
0: gameStatus -> "You Won!"
1: difficulty -> "Intermediate"
2: movesCount -> 13

resultsKey = [
"Final result",
"Level",
"Number of movements",
]

現在,我想遍歷兩個集合以獲取所需的列表項輸出為:

  • 最終結果:您贏了!

列表項的每個鍵都取自我的resultsKey數組,而每個值都取自我的mapResults對象。 兩個集合的長度/大小相同。

我知道如果我有一個Object對象(將其命名為objectResults )而不是Map對象,則可以通過在Object上調用Object.keys(),然后在結果數組上調用.map()或forEach()來實現此目的(將其稱為objectResultsKeys ),如下所示:

objectResultsKeys.map((key, index)=>{
    return <li>
        {resultsKey[index]}:{objectResults[key]}
        </li>
})

這里的事情是,如果遇到這種情況,我將能夠使用.map()函數提供的index參數來訪問resultsKey字符串數組並獲取所需的值。 但是當涉及到Map對象的迭代時,就沒有這種事情

因此,我想知道的是,是否有任何解決方案可以為我提供索引值,並可以在迭代Map對象時用來訪問我的字符串數組。 或者,如果還有其他解決方案可以實現與我所解釋的結果類似的結果。 我必須將Map對象用於此解決方案。

您可以選擇櫃台:

 let index = 0;
 for(const [key, value] of map.entries()) {
   // ...
   index++;
 }

或者,您將條目轉換為數組:

 [...map.entries()].forEach(([key, value], index) =>
   //...
 );

但是實際上,由於地圖是按插入時間排序的,所以我不會依賴於地圖的順序。

暫無
暫無

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

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