【发布时间】:2015-03-12 17:39:53
【问题描述】:
我正在尝试挖掘嵌套的 javascript 数组以获取对象的第一个实例。代码如下:
var utils = require('utils');
var casper = require('casper').create();
casper.start('http://en.wikipedia.org/wiki/List_of_male_tennis_players', function() {
this.echo(this.getTitle());
// Get info on all elements matching this CSS selector
var tennis_info_text = this.evaluate(function() {
var nodes = document.querySelectorAll('table.sortable.wikitable tbody tr');
return [].map.call(nodes, function(node) { // Alternatively: return Array.prototype.map.call(...
return node.textContent;
});
});
// Split the array into an array of object literals
var tennis_data = tennis_info_text.map(function(str) {
var elements = str.split("\n");
var data = {
name : elements[1],
birth : elements[2],
death : elements[3],
country : elements[4]
};
return data;
});
// Dump the tennis_names array to screen
utils.dump(tennis_data.slice(1,5));
});
casper.run();
stdout的结果是这样的:
{
"name": "Acasuso, JoséJosé Acasuso",
"birth": "1982",
"death": "–",
"country": " Argentina"
},
{
"name": "Adams, DavidDavid Adams",
"birth": "1970",
"death": "–",
"country": " South Africa"
},...
对于name 元素,我从tr 行获取所有内容,当您查看目标网址源时,该行匹配2 个元素。我想要的只是“fn”类的名称元素的第二部分;例如:“大卫·亚当斯”、“何塞·阿卡苏索”。我在想像name:elements[1].smtg 这样的东西应该可以工作,但我没有运气。
此外,我如何从elements 对象打印可用的对象键?
【问题讨论】:
-
您的代码中没有
element对象。 -
我的意思是 elements 对象..
-
elements是一个字符串数组,因此除了数组索引和数组函数之外没有可以访问的键。我通过对问题的描述稍微扩展了我的答案。
标签: javascript arrays object casperjs associative