我正在学习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;
}
});
你们可以通过解释这个代码块的作用来帮助我学习吗?
答案 0 :(得分:4)
让所有孩子参与"抽奖活动列表"元素,然后返回包含空"样式"的过滤列表。属性。
第一行非常不言而喻 - 它只是从id"抽奖列表"中检索元素中的孩子。
第二行稍微复杂一点;它利用了两件事:那个[],一个空数组,实际上只是一个有各种方法/属性的对象,并且等号右边的逻辑需要是在" list"之前评估得到新的价值。
编辑: 根据OP评论, []。过滤器是一个原型,所以本质上是一个具有各种属性的对象,就像其他所有东西一样。在这种情况下,过滤器是一种方法 - 请参阅 here 。通常,您只需指定执行测试的匿名函数/方法,但是此处作者使用 .call 来指定要执行测试的任意对象。它似乎已经内置到标准的过滤器方法中,因此我不知道他们为什么这样做。
答案 1 :(得分:0)
类似对象的数组是一些javascript对象,它们类似于数组但有差异,例如它们没有实现数组原型。如果你想通过它们获得数组的好处(例如像元素的问题过滤器子元素),你可以这样做:
Array.prototype.functionName.call(arrayLikeObject, [arg1, [arg2 ...]]);
这里有问题的数组就像是html元素集合;它需要没有任何造型的物品。
答案 2 :(得分:0)
list
被分配了集合元素,这些元素是raffles-list
元素的子元素list
,如下所示
filter
空数组call
由list
引用参数call
和回调函数。 this
的形式参数是list
(j
)和可选的其他对象(在这种情况下是回调函数)style
,并为每个元素list
属性的元素值为空,则元素将保留在数组中。否则它会被丢弃。style
应包含所有不具有public bool ReturnSomething(){
var test = true;
var test2 = MyOtherFunction(test);
var test3 = false;
}
属性值的元素