Utilisation d'une variable pour appeler un élément de tableau

J'ai une variable de chaîne qui contient le nom d'un tableau. Ce que j'aimerais faire est d'accéder à un élément de ce tableau. Et écrivez-le à une autre variable. Comment puis-je faire ceci?

var sample = new Array(); sample[0] = 'one'; sample[1] = 'two'; var arrayname = "sample"; var number = arrayname[1]; /// Something like this, although I realize this doesn't work for obvious reasons... 

J'ai lu d'autres questions en ce qui concerne l'utilisation d'une valeur variable en tant que fonction, mais je n'ai pas compris l'approche ou même si cela fonctionnerait pour la situation ci-dessus.

Merci d'avance!!

Cela devrait le faire:

  var sample = new Array(); sample[0] = 'one'; sample[1] = 'two'; var arrayname = "sample"; var number = window[arrayname][1]; alert(number); 

Il n'y a aucun moyen universel de JavaScript de faire exactement ce que vous avez configuré là-bas, mais vous pouvez utiliser des variables de chaîne pour accéder aux propriétés de l'objet de manière dynamique.

 var objArr = { array1: [], array2: [] }; 

Maintenant, vous pouvez utiliser une variable avec la valeur "array1" ou "array2" pour accéder à ces tableaux:

 var name = "array2"; objArr[name].push(14); 

Ce que vous ne pouvez pas faire en JavaScript, vous pouvez accéder aux variables locales par un nom dynamique, ou indirectement, si vous préférez. Vous pouvez accéder à des variables globales de cette façon si vous avez un nom pour le contexte global, qui dans un navigateur est l'objet window :

 window[ name ].push(17); 

Cependant, il n'y a aucun moyen d'obtenir un nom similaire pour une portée locale.

Edit – @Neal souligne (et est renversé sans pitié) que eval() peut faire ce que vous voulez, mais beaucoup de gens recommandent de rester loin d' eval() sauf si cela est absolument inévitable (ce qui est vraiment rare). Je me suis entraîné pour l'ignorer si bien que je l'oublie toujours lorsque des questions comme celle-ci sont posées (ce qui est étrange, souvent, sur SO, bien que dans ma pratique de programmation je ne me trouve jamais vouloir faire cela).

Vous pouvez utiliser quelque chose comme:

 var arrayName = "sample", number = window[arrayname][1]; 

Je veux dire que vous pouvez utiliser eval, mais ce n'est pas la meilleure approche:

 eval("var arrayname = sample"); var number = arrayname[1]; 

Pourquoi ne pas simplement faire:

 var arrayname = sample; var number = arrayname[1]; 

Si c'est dans la portée globale, vous pouvez accéder à votre tableau en faisant

 var sample = new Array(); sample[0] = 'one'; sample[1] = 'two'; var arrayname = "sample"; var number = (window[arrayname])[1] 
 var sample = new Array(); sample[0] = 'one'; sample[1] = 'two'; var obj = {"sample": sample} var arrayname = "sample"; var number = obj[arrayname][1]; 

De ma tête …

D'abord déclarer une variable globale

 var buf; 

alors

 var sample = new Array(); sample[0] = 'one'; sample[1] = 'two'; var arrayname = "sample"; eval('buf=' + arrayname + ';'); var number = buf[1]; 

Merde indesirable, mais fait ce que vous voulez …