如何在JavaScript中访问“关联”数组的第一个键?

时间:2010-12-20 15:52:08

标签: javascript key associative-array

我有一个带有

的js'allociative'数组
array['serial_number'] = 'value'

serial_number和value是字符串。 例如array['20910930923'] = '20101102'

我按值排序,工作正常。 假设我找回了“已排序”的对象;

现在我想访问'sorted'数组的第一个KEY。 我该怎么做?我不认为我需要使用

进行迭代
for (var i in sorted)

并且在第一个之后停止......

感谢

编辑:只是为了澄清,我知道js不支持关联数组(这就是为什么我把它放在标题中的高位逗号中)。

4 个答案:

答案 0 :(得分:4)

指定JavaScript对象属性没有订单much though many people wish it were different。如果您需要订购,请放弃任何使用对象的尝试,而是使用Array来存储名称 - 值对象:

var nameValues = [
    {name: '20910930923', value: '20101102'},
    {name: 'foo', value: 'bar'}
];

...或作为与现有对象一起使用的有序属性名称列表:

var obj = {
   '20910930923': '20101102',
   'foo': 'bar'
};

var orderedPropertyNames = ['20910930923', 'foo'];

答案 1 :(得分:2)

试试这个:

// Some assoc list
var offers = {'x':{..some object...}, 'jjj':{...some other object ...}};

// First element (see attribution below)
return offers[Object.keys(offers)[0]];

// Last element (thanks to discussion on finding last element in associative array :)
return offers[Object.keys(offers)[Object.keys(offers).length - 1]];

答案 2 :(得分:1)

实际上JavaScript不支持关联数组,所以你不能以隐含的顺序遍历它(例如你无法通过索引器属性访问它array[0]将无法访问你的第一个元素宾语)。语法是它看起来像它的样子,但实际上它没有。所以你的对象没有“订单”。

http://www.hunlock.com/blogs/Mastering_Javascript_Arrays

  

Javascript没有,也没有   支持关联数组。然而…   Javascript中的所有数组都是对象   和Javascript的对象语法给出了一个   关联的基本模拟   阵列。出于这个原因的例子   上面的代码实际上会起作用是   警告说这不是一个真正的阵列   如果你试图,它有真正的pitfals   用它。中的'人'元素   示例成为Array的一部分   对象的属性和方法,只是   像.length,.sort(),. splice()和   所有其他内置属性和   方法

答案 3 :(得分:0)

只是想一想我的头脑,但是你可以换一个关键值对的另一个数组吗?

所以答案是arrayKeyValueReversed ['20101102'] ='20910930923';

对数组进行排序时,使用第一项(array [0])作为键来获取arrayKeyValueReversed中的值。