【发布时间】:2020-05-11 14:28:30
【问题描述】:
在网络爬虫上工作,我从页面中提取篮球统计数据并在 Node.js 中对其进行格式化。这是我在“stats”数组中使用的数据示例:
[
'School1', 'ACC', '35', '34', '33.2',
'2.5', '4.8', '.515', '1.1', '1.5',
'.685', '1.4', '3.2', '.434', '0.5',
'0.7', '.692', '0.7', '2.7', '3.4',
'3.6', '1.5', '0.9', '0.8', '1.3',
'6.8', '', '9.30', 'School2', 'Big 12',
'22', '22', '36.7', '5.6', '11.1',
'.504', '3.2', '5.5', '.592', '2.4',
'5.6', '.419', '1.7', '2.0', '.822',
'1.5', '4.4', '5.9', '6.5', '2.5',
'0.7', '2.8', '1.3', '15.2', '',
'10.07', 'School1', '', '57', '56',
'34.6', '3.7', '7.2', '.509', '1.9',
'3.1', '.621', '1.8', '4.2', '.426',
'1.0', '1.2', '.775', '1.0', '3.4',
'4.4', '4.7', '1.9', '0.8', '1.6',
'1.3', '10.1', '', '9.68'
]
数组中“SchoolX”数据点之后的每一项都代表该特定学校和年份的季节统计数据。我只想将来自 School2 的数据包含在数组中,这就是我在初始循环中删除不必要信息的内容:
if (stats[0].includes("School2")) {
playerObject.push({
gp: stats[2],
gs: stats[3],
mpg: stats[4],
fg: stats[7],
tp: stats[9],
ft: stats[11],
rpg: stats[14],
apg: stats[15],
bpg: stats[16],
spg: stats[17],
ppg: stats[20]
});
} else {
// splice the input array of the first "season" data
stats.splice(0, 28)
}
这成功地处理了数组中的第一个“季节”不在 School2 并删除数据的情况。如何创建一个循环以继续遍历整个数组并删除与 School2 的季节不对应的值,同时将其余数据保留在数组中?
这是预期的输出:
[
'School2', 'Big 12', '22', 22', '36.7',
'5.6', '11.1', '.504', '3.2', '5.5',
'.592', '2.4', '5.6', '.419', '1.7',
'2.0', '.822', '1.5', '4.4', '5.9',
'6.5', '2.5', '0.7', '2.8', '1.3',
'15.2', '', '10.07'
]
只有与 School2 对应的数据保留在数组中。提前感谢您的帮助。
【问题讨论】:
-
我不明白你是如何提取你所说的值...根据你第一次发布的数组,
stats[0]是'School1',stats[2]是'35',stats[3]是'34'等等。 -
@frandroid - 它在 if/else 中。如果“stats”数组的第一个元素(上面的第一个数组)与 School2 匹配,那么我会将前 28 个数组元素的统计信息推送到一个对象,否则我会将它们从数组中删除。
-
所有学校的名字都是
SchoolX开头的吗? -
@JackFleeting - 他们没有,他们将是真正的大学名称,如“弗吉尼亚”或“爱荷华州”,我只是为这个问题匿名了他们。
标签: javascript node.js loops web-scraping