簡體   English   中英

如何將Map.get()與數組一起使用

[英]How to use Map.get() with array of arrays

有什么方法可以將Map.get()與數組數組一起使用(特別是在d3.js中)?

這就是我所擁有的:(1)Map –包含超過100個鍵值對的數據(2)數組數組–列出了我想從Map中提取以填充表格的數據的鍵(僅是100個的子集) +值)

這是我需要創建的:(1)一個新的數組數組–該新數組應依次從第一個數組中獲取每個項目,在Map中查找鍵並返回值。

我可以使Map.get()在單個數組上正常工作,但前提是我指定嵌套數組的索引,如下所示:

var myMap;
var dataArray = [key_1, key_2, key_3, key_4, key_5, key_6]
var newArray = dataArray[0].map(function(d) {
              return myMap.get(d);
              });

但是,當我的原始數組是數組數組時,我不知道該怎么做:

var myMap;
var dataArray = [
   [key_1, key_2, key_3],
   [key_4, key_5, key_6],
   [key_7, key_8, key_9]
   ]
var newArray = ???

有什么建議么?

您具有嵌套數組,因此請使用嵌套map

var newArray = dataArray.map(function(array) {
                   return array.map(function(d) {
                       return myMap.get(d);
                   });
               });

如果在循環中創建函數使您感到困擾,則可以將重新創建的函數分開:

var newArray = dataArray.map(function(array) {
                   return array.map(mapOne);
               });
function mapOne(array) {
    return array.map(function(d) {
        return myMap.get(d);
    });
}

不僅是2D,而且對於不確定的ND鍵數組,您還可以執行以下操作:

 var myMap = new Map(), dataArray = [["key_1", "key_2", ["key_31", "key_32", ["key_331"]]], ["key_4", "key_5", ["key_61", "key_62", ["key_631"]]], ["key_7", "key_8", ["key_91", "key_92", ["key_931"]]] ], getMap = (a,m) => a.map(k => Array.isArray(k) ? getMap(k,m) : m.get(k)); console.log(JSON.stringify(getMap(dataArray,myMap))); 

暫無
暫無

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

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