我有一个独特的挑战: 在 URL1(随机维基百科页面)上,向 URL2(100 个最常见的单词维基百科页面)发出 ajax 请求,从返回的数据创建数组以供稍后使用。
我必须在“URL1”上从控制台运行此命令 示例:
- 导航至 URL1
- 打开控制台
- 粘贴代码
- 按回车键
到目前为止,我已经能够非常接近以下内容:
$.ajax({
url: 'https://en.wikipedia.org/wiki/Most_common_words_in_English',
type: 'GET',
dataType: 'html',
success: function(data) {
Names = $.map($(data).find('.wikitable tr'), function() {
return $(this).find('td:last').text()});
console.log(Names);
}
});
但是我的数组中出现空白值。
在 URL2(ajax 请求中的链接)上,以下代码完美运行
var Names = $('.wikitable tr').map(function() {
return $(this).find('td:last').text() }).get(); console.log(Names);
由于 .get,我在使用这个确切的代码时遇到了错误,删除它后,我得到了一个包含适当数量元素的数组,但它们都是空白的。
谢谢
最佳答案
你的逻辑是对的,你只是使用了错误的函数。 $.map
和 $().map
是具有不同上下文和不同参数的不同函数。
如果您使用正确的 map
函数,您的问题应该可以解决。改变
success: function(data) {
Names = $.map($(data).find('.wikitable tr'), function() {
return $(this).find('td:last').text();
});
console.log(Names);
}
至
success: function(data) {
Names = $(data).find('.wikitable tr').map(function() {
return $(this).find('td:last').text();
});
console.log(Names);
}
在map
的第二种形式中,this
关键字被设置为DOM元素。
我还注意到,代码会返回 105
文本,而不是表中的 100
个单词,因为它也选择了表标题。 .map
的另一个很酷的技巧是,如果返回 null
,它不会在结果中包含该值。因此,你可以像
Names = $(data).find('.wikitable tr').map(function() {
return $(this).find('td:last').text() || null;
});
作为空白字符串,计算结果为 false
,因此 return
将返回 null
而不是 ''
。或者,您可以使选择器更加具体,例如:
Names = $(data).find('.wikitable tr td:odd').map(function() {
return $(this).text();
});
关于JavaScript - 数组值空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36639255/