辞書があります:
var driversCounter = {
"one": 1,
"two": 2,
"three": 3,
"four": 4,
"five": 5
}
次に、ドロップダウンリストに表示する必要があります。辞書でキーのコレクションを取得する方法は?
Object.keys()
または shim 古いブラウザでは...
const keys = Object.keys(driversCounter);
valuesが必要な場合、 Object.values()
があり、キーand値、 Object.entries()
を使用できます。多くの場合、このようにArray.prototype.forEach()
とペアになります...
Object.entries(driversCounter).forEach(([key, value]) => {
console.log(key, value);
});
あるいは、ユースケースを考慮して、これでうまくいくかもしれません...
var selectBox, option, prop;
selectBox = document.getElementById("drivers");
for (prop in driversCounter) {
option = document.createElement("option");
option.textContent = prop;
option.value = driversCounter[prop];
selectBox.add(option);
}
1つのオプションは Object.keys()
を使用しています。
Object.keys(driversCounter)
最新のブラウザで問題なく動作します(ただし、IEはバージョン9以降でのみサポートしています)。
互換性のあるサポートを追加するには、MDNで提供されているコードスニペットをコピーできます。
「辞書」(JSではオブジェクトと呼びます)をループするには、for in
ループを使用します。
for(var key in driversCounter) {
if(driversCounter.hasOwnProperty(key)) {
//key = keys, left of the ":"
//driversCounter[key] = value, right of the ":"
}
}
これはすべてのJavaScript実装で機能します。
var keys = [];
for (var key in driversCounter) {
if (driversCounter.hasOwnProperty(key)) {
keys.Push(key);
}
}
Object.keys
を使用する前に言及した他の人と同様に、古いエンジンでは機能しない場合があります。したがって、次のモンキーパッチを使用できます。
if (!Object.keys) {
Object.keys = function (object) {
var keys = [];
for (var key in object) {
if (object.hasOwnProperty(key)) {
keys.Push(key);
}
}
}
}
Object.Keys()
を使用します
var driversCounter = {
"one": 1,
"two": 2,
"three": 3,
"four": 4,
"five": 5
}
console.log(Object.keys(driversCounter));
最新のJSエンジンでは、Object.keys(driversCounter)
を使用できます
新しいブラウザの場合:Object.keys( MY_DICTIONARY )
はキーの配列を返します。それ以外の場合は、旧式の方法を使用することをお勧めします。
var keys = []
for(var key in dic) keys.Push( key );
他の人が言ったように、あなたはできましたObject.keys()
を使用しますが、古いブラウザを気にする人はいますか?
まあ、私は。
this を試してください。 PHPJSからのarray_keys
は、JSで使用できるようにPHPの便利なarray_keys
関数を移植します。一見、サポートされている場合はObject.keys
を使用しますが、非常に簡単でない場合は処理します。探している値に基づいてキーをフィルタリングする(オプション)と、厳密な比較===
と型キャスト比較==
(オプション)を使用するかどうかを切り替えることも含まれます。
jQueryを使用できる場合
var keys = [];
$.each(driversCounter, function(key, value) {
keys.Push(key);
});
console.log(JSON.stringify(keys));
答えは次のとおりです。
["one","two","three","four","five"]
このようにすると、ブラウザがObject.keys
メソッドをサポートしているかどうかを心配する必要がなくなります。