2017-10-06 76 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]); 
}