我正在学习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;
}
});
Run Code Online (Sandbox Code Playgroud)
你们可以通过解释此代码块的功能来帮助我学习吗?
它获取“ raffles-list”元素的所有子元素,然后返回包含空“ style”属性的元素的过滤列表。
第一行是不言而喻的-它只是从id为“ raffles-list”的元素中检索孩子。
第二行稍微复杂一些。它利用了两点优势:[]是一个空数组,实际上只是一个具有各种方法/属性的对象,并且等号右侧的逻辑需要在“列表”之前求值。 ”获得新的价值。
编辑:根据OP注释,[]。filter是一个原型,因此从本质上讲,一个对象具有与其他所有对象一样的各种属性。在这种情况下,过滤器是一种方法-请参见此处。通常,您仅指定执行测试的匿名函数/方法,但是此处的作者使用.call来指定任意对象来进行测试。看来这已经内置在标准过滤器方法中,所以我不知道他们为什么这样做。
| 归档时间: |
|
| 查看次数: |
1977 次 |
| 最近记录: |