2015-04-03 2 views
0

У меня есть массив, который содержит переменные, которые могут изменить положение, и я хочу создать цикл for, который проверяет, равна ли длина определенной переменной нулю. Я бы предпочел не нацеливаться на позицию переменной в массиве, поскольку это могло измениться.Есть ли способ вернуть имя переменной из массива в Javascript?

Итак, есть ли способ нацеливать переменную в массиве на имя переменной?

+1

Было бы удивительно полезно, чтобы увидеть этот массив и ожидаемый результат. – mplungjan

+0

Мой вопрос довольно прямолинейный, и я не ищу помощи с выходом. Я не думал, что нужно показывать код для чего-то, что может быть невозможно. –

+0

Массивы не содержат переменных, они имеют свойства, содержащие значения. Проводка некоторого кода (даже не работающего кода или псевдокода) поможет в расшифровке того, чего вы пытаетесь достичь. – RobG

ответ

1

Словарь - это то, что вы хотите.

var myDict = {x:"firstVariable", y:"second", z: ""} 
//check length 
for (key in myDict.keys()) { 
    if (len(myDict[key]) == 0) { 
     //Do something 
    } 
} 

Сохраните ваши значения с именами переменных в качестве ключа, а затем просто проверьте длину значения для каждой клавиши.

+1

Это не JavaScript. – Xlander

+0

Спасибо за уловку, нужно исправить –

+1

Хотя это не помогло мне, это определенно помогло мне понять, что свойства объекта могут быть зациклированы. В итоге я нашел ответ, который работал здесь: http://stackoverflow.com/questions/684672/loop-through-javascript-object –

2

Обычно массивы хранят свои данные под номерами индексов, таких как 0 1, 2, n, так что нет. Храните переменные в объекте, используя ключи, и получайте доступ к своим варам, используя эти ключи с чем-то вроде:

var data = {varName: var1, varName2: var2}; 
data['varName'] = //do your thing 
0

Динамический доступ.

var personDetails = {name:"stanze", location: "earth" }; 
var p1="name"; 
var p2="location"; 
console.log(personDetails[p1]); //will print stanze 
console.log(personDetails[p2]); //will print earth 
0

Object.getOwnPropertyNames() возвращает массив, элементы которого являются строки, соответствующих перечислимыми и не перечислимых свойств найдены непосредственно на OBJ.

// Array-like object 
var obj = { 0: 'a', 1: 'b', 2: 'c' }; 
print(Object.getOwnPropertyNames(obj).sort()); // prints '0,1,2' 

var arr = ['a', 'b', 'c']; 
print(Object.getOwnPropertyNames(arr).sort()); // prints '0,1,2,length' 

// Printing property names and values using Array.forEach 
Object.getOwnPropertyNames(obj).forEach(function(val, idx, array) { 
    print(val + ' -> ' + obj[val]); 
}); 

Userful Article

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