2016-11-11 59 views
1

我有一個5000行的csv文件,每行有30個字段(數據表示不同化學元素濃度的測量結果)。Javascript - 映射而不是循環

我想分析和可視化與D3js數據。讀入文件後,我有一個長度爲5000的數組。這裏,每個元素都是一個對象,其中包含各種化學元素的測量值。例如measurements[5].Aluminium在第五次測量時返回鋁的濃度。

現在,我寧願要爲每個元素都有數組,並將其所有測量值作爲元素。雖然for循環很容易,但我想嘗試map函數。

Aluminium = measurements.map(function(row){ 
    return row.Aluminium; 
}); 

這工作,我可以做到這一點爲每個元素,但我寧願有元素作爲參數本身。

function selectElement(elementname){ 
     measurements.map(function(row){ 
      return row.elementname; 
     }); 
}; 

Aluminium = selectElement('Aluminium'); 
Iron = selectElement('Iron'); 

而這就是我卡住的地方。

+0

選擇什麼是你的曲estion?你不是已經有元素作爲參數嗎? –

+0

在JavaScript可以訪問與方括號符號對象屬性,如'行[的ElementName]'將相當於row.Aluminium'的''爲===的ElementName「Aluminium''。 –

回答

0

row.elementname尋找值爲「elementname」的鍵。點符號不做評估。不要

function selectElement(measurements, elementname){ 
     return measurements.map(function(row){ 
      return row[elementname]; 
     }); 
}; 

Aluminium = selectElement(measurements, 'Aluminium'); 
Iron = selectElement(measurements, 'Iron'); 
1

使用JavaScript,您可以用方括號中的鍵的字符串來選擇孩子的特性,所以obj.key成爲obj['key']

使用這個符號,你可以重寫selectElement功能,下面搭配:

function selectElement(elementname){ 
     measurements.map(function(row){ 
      return row[elementname]; 
     }); 
}; 

我們知道elementName爲一個字符串,它被用作行對象