2017-10-06 75 views
1

在應用程序中,解析csv或xlsx文件,然後用戶選擇哪些字段表示地址。For loop array set element等於變量

Field Selection

之後,我把整個CSV到一個數組中,並開始通過它循環發送地址進行地理編碼。我遇到的問題是我需要一種方法來設置數組元素等於用戶選擇的字段。

在循環訪問數組之前,我從每個下拉列表中獲取選擇,如下所示。

var address_selection = document.getElementsByName("address1")[0].value; 
var address2_selection = document.getElementsByName("address2")[0].value; 
var city_selection = document.getElementsByName("city")[0].value; 
var state_selection = document.getElementsByName("state")[0].value; 
var postalcode_selection = document.getElementsByName("postalcode")[0].value; 

我當前的代碼是設置這樣的,其中硬碼的變量等於特定元素。

for (i = 0; i < output.length; i++) { 
     var id = output.ID; 
     var address = output[i].Address; 
     var address2 = output[i].Address2; 
     var city = output[i].City; 
     var state = output[i].StateProvince; 
     var postalcode = output[i].ZipPostalcode; 

我需要做的是以某種方式保持變量名稱相同,但基於用戶選擇更改元素。我嘗試過這樣的東西,但它不起作用。

var address = ("output[i]." + address_selection); 
+1

你想要'output [i] .address_selection'或'output [i] [address_selection]'這樣的東西? –

+0

輸出[i] .address_selection – mkeller

回答

1

可以參考使用[]符號數組索引和對象屬性,所以在JS,這是很容易的。

在你的情況下,它看起來像output是對象的數組,所以output[i]是領域對象一樣AddressAddress2等相反寫output[i].Address,你可以把它寫成output[i]["Address"]。此外,"Address"可以替換爲一個變量,就像i

考慮到這一點,並假設在你的dropdownlists的選項,如「地址」和「地址2」的值事情,那麼你就應該能夠寫出這樣的:

var address_selection = document.getElementsByName("address1")[0].value; 
var address2_selection = document.getElementsByName("address2")[0].value; 
var city_selection = document.getElementsByName("city")[0].value; 
var state_selection = document.getElementsByName("state")[0].value; 
var postalcode_selection = document.getElementsByName("postalcode")[0].value; 

for (i = 0; i < output.length; i++) { 
    var id = output.ID; 
    var address = output[i][address_selection]; 
    var address2 = output[i][address2_selection]; 
    var city = output[i][city_selection]; 
    var state = output[i][state_selection]; 
    var postalcode = output[i][postalcode_selection]; 
+0

謝謝,這工作! – mkeller

+0

@mkeller很高興你有這個排序!如果您想將此標記爲接受的答案,只需單擊投票框下面的標記即可。 – BoffinbraiN

0
var address_selection = document.getElementsByName("address1")[0].value; 
var address2_selection = document.getElementsByName("address2")[0].value; 
var city_selection = document.getElementsByName("city")[0].value; 
var state_selection = document.getElementsByName("state")[0].value; 
var postalcode_selection = document.getElementsByName("postalcode")[0].value; 
var myArray = { 
    address_selection: address_selection, 
    address2_selection: address2_selection, 
    city_selection: city_selection, 
    state_selection: state_selection, 
    postalcode_selection: postalcode_selection 
    }; 
for (var key in myArray) { 
    console.log("key " + key + " has value " + myArray[key]); 
}