我想知道是否有一种快速方法可以将关联数组的键提取到数组中,或者使用JavaScript(jQuery就可以)将逗号分隔的列表提取出来。
options = {key1: "value1", key2: "value2"};
结果应该是数组:
["key1", "key2"]
或只是一个字符串:
"key1, key2"
答案 0 :(得分:26)
您可以通过for
循环轻松获取它们的数组,例如:
var keys = [];
for(var key in options) {
if(options.hasOwnProperty(key)) { //to be safe
keys.push(key);
}
}
然后使用keys
您想要的方式,例如:
var keyString = keys.join(", ");
You can test it out here。 .hasOwnProperty()
检查是安全的,以防有人弄乱对象原型等。
答案 1 :(得分:24)
options = {key1: "value1", key2: "value2"};
keys = Object.keys(options);
答案 2 :(得分:5)
jQuery方法:
var keys = [];
options = {key1: "value1", key2: "value2"};
$.each(options, function(key, value) { keys.push(key) })
console.log(keys)
答案 3 :(得分:2)
现在大多数主流浏览器都内置了此功能,方法为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;
};
})();
该片段与Nick Craver的例子中的片段大致相同,但有两个例外:
hasOwnProperty
方法。然而,这(以及此处的其他答案)不适用于IE枚举错误。您可以在this answer here上找到更多信息并进行部分解决。
答案 4 :(得分:2)
答案 5 :(得分:0)
您可以在jQuery中使用$.each()
:
function keyArray(obj) {
var rv = [];
$.each(options, function(key) { rv.push(key); });
return rv;
}
然后
var keys = keyArray(options);
为您提供["key1", "key2"]
数组,您可以join
获取字符串。