我有一个类似于以下的JSON对象:
var list = {'name1' : {'element1': 'value1'}, 'name2' : {'element1': 'value2'});
如何提取所有nameX字符串值?
例如,假设我想将它们连接成一个字符串输出,例如:"name1 name2"
在任何解决方案中使用jQuery都可以。请建议......
我有一个类似于以下的JSON对象:
var list = {'name1' : {'element1': 'value1'}, 'name2' : {'element1': 'value2'});
如何提取所有nameX字符串值?
例如,假设我想将它们连接成一个字符串输出,例如:"name1 name2"
在任何解决方案中使用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(' ');
if (list.hasOwnProperty(n))
。 - RobG既然您说基于jQuery的解决方案可以,那么这里有一种使用jQuery实现的方式,不需要ES5 shim:
var itemString = $.map(list, function(item, key) {
return(key);
}).join(" ");
这里有演示效果:http://jsfiddle.net/jfriend00/a2AMH/
jQuery.map()
迭代对象的属性或数组的项,并基于我们传递给它的自定义函数构建一个新的数组。然后,我们只需将该数组的结果连接成字符串即可。您可以在此处了解有关jQuery.map()
的更多信息。
keys
方法是在1.8.5+版本中引入的。如果您需要向后兼容,您可能更喜欢使用其他替代方案,例如来自underscore.js的_.keys
shim(@mVChr的答案提供了另一种选择)。 - rjz