以下是我的Chrome开发者控制台中的一些测试:
> tags
returns ["test_tag", "test_tag2"]
> tags.forEach
returns undefined
> ["test_tag", "test_tag2"].forEach
returns forEach() { [native code] }
我不知道为什么我的tags
对象没有响应forEach
。
检查类型并不是很有启发性,这是可以预期的:
> typeof(tags)
// returns 'object'
> typeof(["test_tag", "test_tag2"])
// returns 'object'
我如何构建这个tags
对象?
var $nodes = $(".metadata")
var tags = $nodes.map(function(idx, node){
nodeJson = $(node).text()
return JSON.parse(nodeJson)['tags']
})
答案 0 :(得分:2)
jQuery的map()
函数返回元素集合,或者在这种情况下返回的文本包装在jQuery对象中,这当然是一个对象,而不是一个数组。
如果您想要数组中的文字,那么您也可以使用get()
var $nodes = $(".metadata")
var tags = $nodes.map(function(idx, node){
var nodeJson = $(node).text();
return JSON.parse(nodeJson)['tags'];
}).get();
或更合适的$.map
var $nodes = $(".metadata")
var tags = $.map( $nodes, function(node){
var nodeJson = $(node).text();
return JSON.parse(nodeJson)['tags'];
});
答案 1 :(得分:1)
试试这样:
Array.prototype.forEach.call(tags, function(el){
console.log(el);
});