说明数组过滤中的条件

时间:2014-05-22 08:27:03

标签: javascript arrays

我在这里有这行代码:

var selectionItems = children.filter(function (el) { return el instanceof Path; });
  

它应该克隆'''' children数组进入selectionItems   变量,但不包括所有不是'路径'

的项目。

  • 我把它放在一起很麻烦。我没写这篇文章 代码,所以我还没有理解我应该如何声明 以我的过滤为基础的条件。

  • 我希望有更多条件来进行过滤。

我如何包含例如仅包含路径或矩形的项目?

2 个答案:

答案 0 :(得分:2)

你可以简单地使用逻辑或运算符,就像这样

children.filter(function(el) {
    return el instanceof Path || el instanceof Rectangle;
});

现在,如果属性为PathRectangle,则会选择所有元素。

您可以返回任何有效的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;