2017-10-06 17 views
1

Dans l'application, un fichier csv ou xlsx est analysé et l'utilisateur sélectionne les champs qui représentent une adresse.Pour un élément de groupe de boucles égal à une variable

Field Selection

Après que je mets l'ensemble csv dans un tableau et commencent à boucle à travers pour envoyer l'adresse à géocodées. Le problème que j'ai est que j'ai besoin d'un moyen de définir l'élément de tableau égal au champ sélectionné par l'utilisateur. Avant de faire une boucle dans le tableau, j'attrape la sélection de chacune des listes déroulantes comme ceci.

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; 

Mon code actuel est configuré comme ceci, qui code dur la variable égale à un élément spécifique. Ce que je dois faire est en quelque sorte garder les noms de variables le même mais changer l'élément en fonction de la sélection de l'utilisateur. J'ai essayé quelque chose comme ça mais ça ne marche pas.

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

-vous voulez quelque chose comme 'output [i] .address_selection' ou' output [i] [address_selection] '? –

+0

sortie [i] .address_selection – mkeller

Répondre

1

Vous pouvez référencer les indices de tableau et les propriétés d'objets en utilisant [] notation, donc dans JS, ce qui est très facile.

Dans votre cas, il semble que output est un tableau d'objets, de sorte output[i] est un objet avec des champs comme Address, Address2 etc. Au lieu d'écrire output[i].Address vous pouvez l'écrire comme output[i]["Address"]. En outre, "Address" peut être remplacé par une variable tout comme i.

Avec cela à l'esprit, et en supposant que les valeurs des options de votre DropDownLists sont des choses comme « Adresse » et « Address2 » alors vous devriez juste être capable d'écrire ceci:

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

Merci, cela a fonctionné! – mkeller

+0

@mkeller Je suis content que vous ayez fait ça! Si vous voulez marquer cela comme la réponse acceptée, il suffit de cliquer sur la coche sous la case de vote. – 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]); 
}