beforeEach(function () {
jasmine.addMatchers({
toReport: function () {
return {
compare: function (actual, expected, msg) {
var result = {pass: actual == expected};
result.message = msg;
return result;
}
}
}
});
});
包括x的所有项目,除了那些是y的单元格
但是,如果我想获得所有x和y单元格的项目呢?
x-.y
但它需要两次运行昂贵的操作。 有更好的解决方案吗?
答案 0 :(得分:4)
e.
通常很有用。
x e. y
给出了匹配列表:
对于每个x项返回
1
,如果它存在于" set" y,0
否则。
1 2 3 4 e. 5 9 2
0 1 0 0
然后,
x (e. # [) y
选择两个列表中都存在的元素。
1 2 3 4 (e. # [) 5 9 2
2
5 8 (e. # [) i.12
5 8
答案 1 :(得分:3)
执行-.
两次是在J.中实现交集的经典方法。
低效率是次要的(一个恒定的因素 - 而且,一般来说,你不应该关注J中的效率问题,除非它们超过2倍 - 当你遇到资源问题时,你通常会想要关注因素为1000或更高的问题)。
换句话说,如果([-.-.)
或-.^:2
对您来说太慢,那么-.
对您来说也会太慢。 (这可能发生在底层实现效率低下的极大数据集上。最近版本的J已经完成了一些工作,以纠正这个问题。)
令人失望,也许是实际的。