2016-06-26 2 views
1

Предположим, что я создал простой массив:Найдите массив значений с помощью двух переменных

var list = [ 
    "Hello", 
    "Goodbye", 
]; 

А потом я поставил две переменные, одна определить две переменные: одна для имени массива, а другой для номер, как таковой:

var array = "list"; 
var number = 0; 

а потом я запускаю следующую команду:

console.log(array[number]); 

Но он выводит номер «1» вместо «Hello».

Может ли кто-нибудь объяснить это?

+0

Почему вы выполняете 'var array =" list ";'? – thefourtheye

+1

Вы должны указать текущий объем. Если это глобально, вы должны использовать 'console.log (window [array] [number])', поскольку окно является глобальной областью. – Blindman67

+0

@ Blindman67 Это можно сделать, но не рекомендуется. И, из имени переменной в 'var array =" list ";' вы можете понять, что OP хочет сделать здесь. – Tushar

ответ

4

Но оно выводит число «1» вместо «Привет». Есть идеи?

Нет, это не выход 1, это l (алфавит L строчный). не

array больше не является массивом, когда вы присваиваете снабжать струной, тетивой и т.п.list к нему в

var array = "list"; 

, а затем

array[0] 

является эквивалентом

"list"[0] 

который будет возвращать персонаж a t нулевой индекс, возвращаясь таким образом l.


Решение:

Для ссылки на массив, используйте имя переменной (без кавычек не требуется)

var array = list; // Remove quotes. 

Если вы не хотите, чтобы ссылаться на тот же массив и хотите для создания копии, slice()

var copy = list.slice(0); 
1
console.log(array[number]) 

печатает из значения 0-го элемента «список» строка, которая л, что то, что вы видите.

Вы назначили строку «list» переменной с именем array. И затем, когда вы пытаетесь получить элемент 0-го (ваш номер переменной), вы получите первый символ в строке «list».

1

Вы уверены, что выводит «1» (номер один), а не «l» (lowecase letter ell)?Поскольку

console.log(array[number]); 

начинается с array объектом (который является строкой значения «списка»), а затем возвращает позицию, связанную с number, который является 0. Поэтому на английском языке это означает печать 0-й буквы «списка», которая равна «l».

Основываясь на том, что вы написали, звучит так, будто вы очень абстрактны с уровнем косвенности, которого я обычно не вижу. Вы можете делать то, что вы просите, но это странно. list - это переменная в глобальном масштабе, которая для браузера доступна через window. Таким образом, вы можете сделать следующее:

window[array][number] 

который интерпретируется следующим образом:

window['list'][number] 

, который так же, как

list[number] 

, который так же, как

list[0] 

который является

"Hello" 

Как правило, уровень абстракции, указанный вами с помощью переменной array, не требуется.

Смежные вопросы