我正在学习 javascript 并尝试编写对列表进行排序的代码,如果元素满足某些条件则将其删除。
我发现这个片段看起来很有希望,但不知道它是如何工作的,所以我可以根据我的需要调整它:
list = document.getElementById("raffles-list").children; // Get a list of all open raffles on page
list = [].filter.call(list, function(j) {
if (j.getAttribute("style") === "") {
return true;
} else {
return false;
}
});
你们能通过解释这个代码块的作用来帮助我学习吗?
它获取“raffles-list”元素的所有子元素,然后返回包含空“style”属性的过滤列表。
第一行是不言而喻的——它只是从 id 为“raffles-list”的元素中检索子元素。
第二行有点复杂;它利用了两件事:[],它是一个空数组,实际上只是一个具有各种方法/属性的对象,并且需要在“list”之前评估等号右侧的逻辑" 得到新的值。
- 使用空白数组来调用“filter”方法
- 讲述了filter to use list作为要过滤的数组,并使用函数(j)进行过滤,其中 j 是正在测试的列表中的项目
- 如果该项目的样式属性为空,即没有应用样式,则返回 true。
编辑:
根据OP评论,[]。筛选是一个原型,因此本质上是一个像其他所有东西一样具有各种属性的对象。在这种情况下,过滤器是一种方法 - 请参阅here https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter。通常,您只需指定一个执行测试的匿名函数/方法,但是这里的作者使用了.call为了指定一个任意对象来进行测试。看来这已经内置于标准中filter方法,所以我不知道他们为什么这样做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)