我在这里有这行代码:
var selectionItems = children.filter(function (el) { return el instanceof Path; });
它应该克隆'''' children数组进入selectionItems 变量,但不包括所有不是'路径'
的项目。
我把它放在一起很麻烦。我没写这篇文章 代码,所以我还没有理解我应该如何声明 以我的过滤为基础的条件。
我希望有更多条件来进行过滤。
我如何包含例如仅包含路径或矩形的项目?
答案 0 :(得分:2)
你可以简单地使用逻辑或运算符,就像这样
children.filter(function(el) {
return el instanceof Path || el instanceof Rectangle;
});
现在,如果属性为Path
或Rectangle
,则会选择所有元素。
您可以返回任何有效的JavaScript表达式。在内部,表达式的真实性将由JavaScript确定。
答案 1 :(得分:1)
我把它放在一起很麻烦。我没写这篇文章 代码,所以我不明白我应该如何声明一个 条件以我的过滤为基础。
这基本上是filter
的工作原理:
function filter(f, xs) {
var res = [];
for (var i=0; i<xs.length; i++) {
if (f(xs[i], i)) {
res.push(xs[i]);
}
}
return res;
}
filter
是一个高阶函数;它需要在if
语句中检查谓词,以决定是否将元素添加到结果中。
我希望有更多条件作为我的过滤基础。
考虑如何在if
语句中执行此操作,您可以使用&&
或||
运算符。与filter
相同:
return el instanceof Path || el instanceof Rectangle;