簡體   English   中英

如何訪問 JavaScript 中“關聯”數組的第一個鍵?

[英]How do I access the first key of an ‘associative’ array in JavaScript?

我有一個 js 'associative' 數組,與

array['serial_number'] = 'value'

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

我按值排序,效果很好。 假設我取回了“已排序”的對象;

現在我想訪問“已排序”數組的第一個 KEY。 我該怎么做? 我不能認為我需要迭代

for (var i in sorted)

然后在第一個之后停下來......

謝謝

編輯:只是為了澄清,我知道 js 不支持關聯數組(這就是為什么我把它放在標題中的高逗號中)。

2021 更新

從 ES6 開始,具有字符串鍵的屬性按插入順序枚舉。 這是一個很好的總結 我 2010 年的原始答案當時是正確的,並保留在下面:

原答案

JavaScript 對象屬性被指定為沒有順序,盡管很多人希望它是不同的 如果您需要排序,請放棄任何使用對象的嘗試,而是使用Array來存儲名稱-值對象:

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

...或作為與現有對象一起使用的屬性名稱的有序列表:

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

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

嘗試這個:

// 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]];

實際上 JavaScript 不支持關聯數組,因此您不能以隱含的順序遍歷它(例如,您無法通過索引器屬性訪問它, array[0]將不會訪問您對象中的第一個元素)。 語法使它看起來像,但實際上並非如此。 所以你的對象沒有“訂單”。

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

Javascript 沒有,也不支持關聯數組。 然而……Javascript 中的所有數組都是對象,Javascript 的對象語法提供了對關聯數組的基本模擬。 出於這個原因,上面的示例代碼實際上可以工作。 請注意,這不是一個真正的數組,如果您嘗試使用它,它有真正的陷阱。 示例中的“person”元素成為 Array 對象的屬性和方法的一部分,就像 .length、.sort()、.splice() 以及所有其他內置屬性和方法一樣。

只是在想我的頭頂,但是你能有另一個交換鍵值對的數組嗎?

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

對數組進行排序時,使用第一項(array[0])作為key,獲取arrayKeyValueReversed 中的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM