javascript从结果中删除NULL
为了我的缘故,我无法使用过滤器(.Filter(函数(d,i){return d}))来消除在这个数组上工作的“undefined”或“0” 该脚本在Applescript小程序中运行,并应以字符串形式返回所有生成的URLjavascript从结果中删除NULL,javascript,arrays,Javascript,Arrays,为了我的缘故,我无法使用过滤器(.Filter(函数(d,i){return d}))来消除在这个数组上工作的“undefined”或“0” 该脚本在Applescript小程序中运行,并应以字符串形式返回所有生成的URL var x=Array.prototype.slice.call(document.querySelectorAll(“.product\u card”)) .map(功能(d,i){ var title=d.querySelector(“.product\U card\U
var x=Array.prototype.slice.call(document.querySelectorAll(“.product\u card”))
.map(功能(d,i){
var title=d.querySelector(“.product\U card\U title”),
link=d.querySelector(“a”);
控制台日志(标题);
控制台日志(链接);
if(title&&link&&Rocker/gi.test(title.textContent)){
return link.href
}
})
document.getElementById(“结果”).textContent=JSON.stringify(x)代码>
首先,您可以通过使初始的qSA
选择更加具体:”.product\u card a.product\u card\u title“
来摆脱一些内部DOM选择
然后,您可以使用.filter()
,方法是返回检查每个元素.includes()
是否包含“摇臂”
文本的结果。在映射.href
之前执行此操作
最后,.map()
将这些结果添加到每个.parentNode
的.href
,因为我们直接用文本选择了子节点
var x=Array.prototype.slice.call(document.querySelectorAll(“.product\u card a.product\u card\u title”))
.过滤器(功能(d){
返回d.textContent.toLowerCase().includes(“摇杆”)
})
.map(函数(d){return d.parentNode.href});
document.getElementById(“结果”).textContent=JSON.stringify(x)代码>
您期望的输入和输出是什么?我发现if语句中只有一个显式返回,另一个返回隐式发生,并且返回未定义的。调用筛选器
可能会有所帮助。@tryzniak-脚本应将所有URL作为字符串输出。用这些信息更新了我的OP,谢谢。谢谢@Crazy Train(ozzy lover?)这真是太棒了!不知道在哪里放置过滤功能。不客气。(ozzy/rhodes)虽然您可以重新编写它,首先收集href
字符串以及一些未定义的值,但我认为首先使用.filter()
更容易理解。