2

我有一个数组:

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

如何在Javascript中获取此数组中每个元素的索引?

4

4 回答 4

1

首先,有点术语:那不是一个数组,它是一个对象。

既然这已经不碍事了,我不能确定你在问什么。您是否正在寻找这个,也许?:

for( var i in assArray) {
    alert(i+": "+assArray[i]);
    // bad example, do something useful here
}
于 2013-07-14T13:42:04.740 回答
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 返回一个数组,其元素是与直接在对象上找到的可枚举属性相对应的字符串。属性的顺序与通过手动循环对象的属性给出的顺序相同。

于 2013-07-14T14:42:07.387 回答
0

基本上你在这里拥有的是一组“键”“值”对。您没有索引为 0...n 的数组。要访问数据结构,您需要使用密钥(“VeryImportantData1”、“VeryImportantDataTest”等)。

如何访问键/值的简单示例:

警报(assArray ['Dumdum']);//这将提醒“非常重要”

console.log(assArray['Vey']); //这将记录“非常重要”

于 2013-07-14T14:19:00.710 回答
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;
    }
}

注意:排序参数是可选的。(由于关联数组(对象)的键在内部存储为哈希值,因此它们以明显随机顺序返回。请注意,没有任何排序函数作为参数的 Array.sort() 始终按递增顺序执行字符串比较。作为任何值-type 可以转换为有意义的字符串表示,这也是一个合理的默认值。)

// 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];
    }
}
于 2013-07-14T14:29:24.113 回答