2013-07-14 4 views
2

У меня есть массив:Javascript индекс массива объектов

var assArray = {}; 
assArray["VeryImportantData1"]="VeryImportant"; 
assArray["VeryImportantDataTest"]="VeryImportant"; 
assArray["Very"]="VeryImportant"; 
assArray["Vey"]="VeryImportant"; 
assArray["Test"]="VeryImportant"; 
assArray["Dumdum"]="VeryImportant"; 

Как получить индекс каждого элемента в этом массиве в JavaScript?

+2

'Object.keys (assArray)'? –

ответ

1

Прежде всего, немного терминология: это не массив, это объект.

Теперь, когда все в порядке, я не могу точно сказать, о чем вы просите. Вы ищете это, возможно ?:

for(var i in assArray) { 
    alert(i+": "+assArray[i]); 
    // bad example, do something useful here 
} 
+0

Вы также можете отфильтровать свойства прототипов с помощью 'assArray.hasOwnProperty (i)' –

+0

@steff Не должно быть никаких *, если * среда является разумной. –

+0

@Jack Окружающая среда [ухмыляется и держит шпатель] (http://xkcd.com/371/). –

0

В основном то, что у вас есть здесь есть множество «ключевых», «значение» пар. У вас нет массива с 0 ... n индексами. Чтобы получить доступ к структуре данных, вам нужно будет использовать свои ключи («VeryImportantData1», «VeryImportantDataTest» и т. Д.).

Простые примеры того, как получить доступ к ключ/значение:

предупреждение (assArray [ 'дум-дум']); // Это будет предупреждать «VeryImportant»

console.log (assArray ['Vey']); // Это журнал "VeryImportant"

0

Вы могли бы использовать что-то вроде:

function getKeyListFor(obj, term, sortOpt) { 
    var keys=[]; 
    for (var k in obj) { 
     if (obj[k] === term) keys.push(k); 
    } 
    if (keys.length) { 
     if (sortOpt) keys.sort(); 
     return keys; 
    } 
    else { 
     return null; 
    } 
} 

Примечания: Род-аргумент будет факультативным. (Поскольку ключи ассоциативных массивов (объектов) хранятся внутри себя как хэши, они возвращаются, по-видимому, в произвольном порядке else. Разумеется, что Array.sort() без какой-либо функции сортировки в качестве аргумента всегда выполняет сравнение строк в порядке возрастания. -типа могут быть преобразованы в осмысленного строкового представления, это также здравомыслящий по умолчанию)

// Usage example 
var fruitColors = { 
    'banana': 'yellow', 
    'apple': 'red', 
    'orange': 'orange', 
    'strawberry': 'red' 
} 
var redList = getKeyListFor(fruitColors, 'red', true); 
// returns ['apple', 'strawberry'] 
var blueList = getKeyListFor(fruitColors, 'blue'); 
// returns null 
if (blueList) { 
    // delete all blue entries 
    for (var i=0; i<blueList.length; i++) { 
     var key = blueList[i]; 
     delete fruitColors[key]; 
    } 
} 
1

Вы можете использовать что-то вроде:.

var keys = Object.keys(assArray); 

for(var index = 0; index < keys.length; index++) 
{ 
    var key = keys[index]; 

    // Do something with the index and key... 
    alert(key + ' has an index of: ' + index); 
} 

Ссылка для Object.keys(obj)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

Object.keys возвращает массив, элементы которого представляют собой строки, соответствующие , перечислимым свойствам, найденным непосредственно на объекте. Упорядочение свойств такое же, как и задание путем циклического изменения свойств объекта вручную.

+0

Если вы можете использовать 'Object.keys()', вы также можете использовать 'forEach()' :) –

+0

Да, подумал об этом ... не уверен, почему я выбрал index ++ в конце! –

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