2012-03-10 71 views

回答

11

获取对象的键,还有在ES5,它返回一个数组Object.keys

Object.keys(list).join(" "); // "name1 name2" 

如果你要过滤的键,你可以使用.filter

Object.keys(list).filter(function(key) { 
    return key.indexOf("name") === 0; // filter keys that start with "name" 
}).join(" "); // "name1 name2" 
+1

尽管 - 键控方法是在1.8.5+中引入的。如果你需要后向兼容性,你可能更喜欢使用类似'_.keys'的替代方式,来自underscore.js(@ mVChr的答案提供了另一个) – rjz 2012-03-10 22:50:52

3
var names = Object.keys(list); 
4

对于不支持keys旧的浏览器:

var list_keys = [] 
for (var n in list) { 
    list_keys.push(n) 
} 
var names = list_keys.join(' '); 
+0

你应该包含一个hasOwnProperty测试:'if(list.hasOwnProperty(n) )'。 – RobG 2012-03-10 23:06:02

2

既然你说一个基于jQuery的解决方案就可以了,这里有一个方法使用jQuery做到这一点并不需要ES5垫片:

var itemString = $.map(list, function(item, key) { 
    return(key); 
}).join(" "); 

演示在这里工作:http://jsfiddle.net/jfriend00/a2AMH/

jQuery.map()迭代对象的属性或数组的项目,并根据我们传递给它的自定义函数构建一个新数组。然后,我们只需将该数组的结果加入到字符串中。你可以阅读约jQuery.map()here