在Python中dict.items
返回包含鍵和dict
的值的元組列表。 Javascript沒有元組,所以它必須是一個嵌套數組。
如果你會請我一個小小的python代碼來顯示不同之處。
>>> {1:2, 2:3}.items()
[(1, 2), (2, 3)]
>>> {1:2, 2:3}.values()
[2, 3]
我看到接受的答案返回對象值的陣列,其是蟒功能dict.values
的等價物。所要求的是dict.items
。要做到這一點,只需循環並建立一個2元素數組的嵌套數組。
function items(obj){
var ret = [];
for(v in obj){
ret.push(Object.freeze([v, obj[v]]));
}
return Object.freeze(ret);
}
我把Object.freeze
在嚴格按照規範並執行返回的值不應改變,效仿蟒蛇元組的不變性。如果你把它拿出來,它顯然仍然有效。
需要指出的是,這樣做有點違背了items
的目的,因爲它以線性而非關聯的方式迭代對象時使用,並且避免計算散列值以查找關聯數組中的每個元素。對於那些關心大型應用的小物體來說,這可能會讓你放慢速度,並且可能會有更習慣的方式來做你想要的JavaScript。
另一種更新的方法是使用Object.entries(),它將完全按照您的要求進行。
Object.entries({1:1, 2:2, 3:3})
.forEach(function(v){
console.log(v)
});
該支持僅限於文檔中提到的瀏覽器版本。
我應該補充說,_reason_我想這樣做,以便我可以對數組進行排序(鍵只是uid),所以也許我應該問「如何對關聯數組中的項進行排序」。 – 2011-03-17 12:05:57
問題是不正確的。 Python的'dict.items()'返回(鍵值)元組列表。你的retval的例子對應於'dict.values()'。 – 2017-05-23 13:17:57