使用linq.js确定是否存在多个不同项目的有效方法

时间:2013-03-19 22:31:56

标签: linq.js

我正在寻找一种使用linq.js来确定集合是否具有多个不同值的有效方法。我假设以下方法效率低下,因为它必须考虑整个集合。

if (Enumerable.From(collection).Distinct().Take(2).Count() > 1) {
    //it's not unique, continue loop
}

我的问题类似于: Efficient Linq Enumerable's 'Count() == 1' test

是否有更高效的基于linq.js的技术?谢谢!

2 个答案:

答案 0 :(得分:1)

如果你专门测试一个集合中是否有多个项目,那么写它的惯用方法(恕我直言)就是将SkipAny结合使用。跳过第一个项目,如果集合中有其他项目,则它有多个项目。如果它是空的,Skip将无效地执行任何操作,并且集合中仍然没有任何其他项目。

在您的情况下,您的情况将是:

if (Enumerable.From(collection).Distinct().Skip(1).Any()) {
    //it's not unique, continue loop
}

答案 1 :(得分:0)

var test = collection[0];
if (Enumerable
    .From(collection)
    .Skip(1)
    .Any(function (e) { return e != test; })
   )

让我解释一下。至少2个不同的项目表示对于任何项目,至少一个项目不等于它。让我们选择第一个项目,你可以选择任何其他项目,首先是更方便,让我们看看是否有任何其他数字不等于它(除了它自己)。