我有一个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