2012-03-10 137 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