我有一個JSON對象,像這樣:javascript - 如何獲取對象名稱或關聯數組索引名稱?
var list = {'name1' : {'element1': 'value1'}, 'name2' : {'element1': 'value2'});
我如何提取所有nameX字符串值?
例如,假設我想輸出它們串聯在一個字符串,如:「名1名2」
在任何解決方案使用jQuery的是罰款。請指教...
我有一個JSON對象,像這樣:javascript - 如何獲取對象名稱或關聯數組索引名稱?
var list = {'name1' : {'element1': 'value1'}, 'name2' : {'element1': 'value2'});
我如何提取所有nameX字符串值?
例如,假設我想輸出它們串聯在一個字符串,如:「名1名2」
在任何解決方案使用jQuery的是罰款。請指教...
獲取對象的鍵,還有在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"
var names = Object.keys(list);
對於不支持keys
舊的瀏覽器:
var list_keys = []
for (var n in list) {
list_keys.push(n)
}
var names = list_keys.join(' ');
你應該包含一個hasOwnProperty測試:'if(list.hasOwnProperty(n) )'。 – RobG 2012-03-10 23:06:02
既然你說一個基於jQuery的解決方案就可以了,這裏有一個方法使用jQuery做到這一點並不需要ES5墊片:
var itemString = $.map(list, function(item, key) {
return(key);
}).join(" ");
演示在這裏工作:http://jsfiddle.net/jfriend00/a2AMH/
jQuery.map()
迭代對象的屬性或數組的項目,並根據我們傳遞給它的自定義函數構建一個新數組。然後,我們只需將該數組的結果加入到字符串中。你可以閱讀約jQuery.map()
here。
儘管 - 鍵控方法是在1.8.5+中引入的。如果你需要後向兼容性,你可能更喜歡使用類似'_.keys'的替代方式,來自underscore.js(@ mVChr的答案提供了另一個) – rjz 2012-03-10 22:50:52