JavaScriptでかなり大きな連想配列から最初の項目(実際には最初のキー)だけを取得する必要があります。これが私が現在行っている方法です(jQueryを使用)。
getKey = function (data) {
var firstKey;
$.each(data, function (key, val) {
firstKey = key;
return false;
});
return firstKey;
};
推測するだけですが、これを行うにはより良い(読む:より効率的な)方法が必要だと思います。助言がありますか?
更新:洞察に満ちた回答とコメントをありがとう! JavaScript 101を忘れていました。仕様では、連想配列の特定の順序は保証されていません。しかし興味深いのは、ほとんどのブラウザがそのように実装していることです。最初のキーを取得する前に配列を並べ替えない方がいいですが、私のユースケースを考えると避けられないかもしれません。
連想配列(つまり、オブジェクト)には実際にはfirstまたはlast要素はありません。取得したい唯一の順序は、要素がパーサーによって保存された順序であり、それとの一貫性は保証されません。
しかし、もし最初に出てくるが欲しいなら、古典的な方法は実際には少し簡単かもしれません:
function getKey(data) {
for (var prop in data)
return prop;
}
継承プロパティを避けたいですか?
function getKey(data) {
for (var prop in data)
if (data.propertyIsEnumerable(prop))
return prop;
}
Object.keys()
から返された最初のエントリを参照することで、関数を作成する必要を回避できます。
_var firstKey = Object.keys(data)[0];
_
ソートされたキーリストの最初のエントリについては、.sort()
メソッドへの呼び出しを追加するだけです。
_var firstKey = Object.keys(data).sort()[0];
_
Jonathanのソリューションに加えて、デフォルトの配列機能を拡張することもできます。
Array.prototype.getKey = function() {
for (var prop in this)
if (this.propertyIsEnumerable(prop))
return prop;
}