Ember.js相当于.difference?

时间:2013-01-25 14:11:02

标签: javascript ember.js

Ember是否有.difference函数like underscore does?我有一个ArrayController,每个对象都有一组对象。我想从ArrayController2

中减去ArrayController1中的所有对象
ArrayController1:
   1
   2
   3
   4

ArrayController2:
   2
   4

然后做差异:

ArrayController1.difference(ArrayController2) => 1
                                                 3

2 个答案:

答案 0 :(得分:7)

我认为没有一种方法可以做到这一点,但你可以编写一个基本上执行以下操作的帮助程序:

array1.reject((function(item) {
  return array2.contains(item);
}), array2);

只需循环遍历array1并拒绝为array2.contains()返回true的任何内容。

答案 1 :(得分:0)

晚5年了,但是有一个计算功能setDiff,您可以使用它来实现所需的功能。

import { setDiff } from '@ember/object/computed';
...
ArrayDifference: setDiff('ArrayController1', 'ArrayController2') // [1, 3]

https://www.emberjs.com/api/ember/2.18/functions/@ember%2Fobject%2Fcomputed/setDiff