連想配列のキーを配列にすばやく抽出する方法、またはJavaScriptを使用してコンマ区切りのリストを抽出する方法があるかどうか疑問に思っていました(jQueryは問題ありません)。
options = {key1: "value1", key2: "value2"};
結果は配列になるはずです:
["key1", "key2"]
または単に文字列:
"key1, key2"
for
ループを介してそれらの配列を簡単に取得できます。次に例を示します。
_var keys = [];
for(var key in options) {
if(options.hasOwnProperty(key)) { //to be safe
keys.Push(key);
}
}
_
次に、keys
を使用して、たとえば次のようにします。
_var keyString = keys.join(", ");
_
ここでテストできます 。 .hasOwnProperty()
チェックは、誰かがオブジェクトのプロトタイプなどをいじった場合に備えて安全です。
options = {key1: "value1", key2: "value2"};
keys = Object.keys(options);
それを行うjQueryの方法:
var keys = [];
options = {key1: "value1", key2: "value2"};
$.each(options, function(key, value) { keys.Push(key) })
console.log(keys)
主要なブラウザのほとんどにこの機能が組み込まれています。メソッドは Object.keys()
です。
var keys = Object.keys(options);
//-> ["key1", "key2"]
小さなスニペットを使用して、これをサポートしていないブラウザーに実装することもできます。
Object.keys = Object.keys || (function () {
var hasOwnProperty = Object.prototype.hasOwnProperty;
return function (o) {
if (typeof o != "object" && typeof o != "function" || o === null)
throw new TypeError("Object.keys called on a non-object");
var result = [];
for (var name in o) {
if (hasOwnProperty.call(o, name))
result.Push(name);
}
return result;
};
})();
そのスニペットは、2つの例外を除いて、Nick Craverの例のスニペットとほとんど同じように機能します。
hasOwnProperty
メソッドがないInternet ExplorerのDOM関連の厄介な問題を回避します。これ(およびここでの他の回答)はIE列挙のバグを回避しません。詳細については、 この答えはこちら 。
JQueryで$.each()
を使用できます。
function keyArray(obj) {
var rv = [];
$.each(options, function(key) { rv.Push(key); });
return rv;
}
その後
var keys = keyArray(options);
あなたにあげる ["key1", "key2"]
配列として。これをjoin
して文字列を取得できます。