Emberjs filter()与filterProperty()

Hao*_* Li 18 ember.js

似乎filter()filterProperty()非常相似,两者都是返回过滤数组的Enumerable函数.

在什么情况下我应该使用其中一个?

Cra*_*den 33

更新: filterProperty()已被替换为filterBy().用法相同,请参阅下面的评论.

filterBy()是一种快捷方式filter(),可让您根据可枚举元素的指定属性快速筛选可枚举项.使用filter(),如果你需要做一些更复杂或出的最普通的,你不能使用filterBy().

例如,假设您有一个像这样的对象数组:

[
  {firstName: 'Kris', lastName: 'Selden'},
  {firstName: 'Luke', lastName: 'Melia'},
  {firstName: 'Formerly Alex', lastName: 'Matchneer'}
]
Run Code Online (Sandbox Code Playgroud)

并且您希望拥有一个使用过滤器数组的计算属性,仅包括具有以下内容的人firstName == 'Luke':

使用filter():

filterComputed: function() {
  return this.get('content').filter(function(item, index, enumerable){
    return item.firstName == 'Luke';
  });
}.property('content.@each')
Run Code Online (Sandbox Code Playgroud)

使用filterBy():

filterByComputed: function() {
  return this.get('content').filterBy('firstName', 'Luke');
}.property('content.@each')
Run Code Online (Sandbox Code Playgroud)

JSBin的例子

  • NB`enixProperty`已被弃用,而不是`filterBy`.相同的用法.https://github.com/emberjs/website/pull/882 (11认同)