对于循环数组集元素等于变量

时间:2017-10-06 12:11:38

标签: javascript arrays for-loop element getelementsbyname

在应用程序中解析csv或xlsx文件,然后用户选择代表地址的字段。

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);

2 个答案:

答案 0 :(得分:1)

您可以使用[]表示法引用数组索引和对象属性,因此在JS中,这非常简单。

在您的情况下,output似乎是一个对象数组,因此output[i]是一个包含AddressAddress2等字段的对象,而不是{ {1}}您可以将其写为output[i].Address。此外,output[i]["Address"]可以替换为"Address"之类的变量。

考虑到这一点,并假设下拉列表中的选项值是“地址”和“地址2”之类的东西,那么你应该能够写下这个:

i

答案 1 :(得分:1)

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]);
}