Linq JS。如何重复分组?

时间:2014-05-19 19:32:03

标签: javascript linq linq.js

我正在尝试将linqJS与以下对象数组一起使用:

var foo = [
    {
        id: 1234,
        index: 0,
    },
    {
        id: 1234,
        index: 1,
    },
    {
        id: 5678,
        index: 2,
    },
    {
        id: 9123,
        index: 3,
    }
];

我要做的是将重复的 id 分组,然后从该组中选择索引较大的对象,在本例中为foo [1] 。我没有使用linq,所以我不确定这是否可行,这是我到目前为止所得到的:

var bar = Enumerable.From(foo)
    .GroupBy(function (x) { return x.id == x.id; })
    .ToArray();

但它不起作用...... 我知道如何用vanilla JS做这个,但我希望能使用这个插件。

感谢任何帮助!

jsFiddle:http://jsfiddle.net/aguerrero_g87/dUy7b/

2 个答案:

答案 0 :(得分:0)

试试这个:

Enumerable.From(foo)
          .GroupBy(function(x) { return x.id })
          .Select(function(x)
                  {
                  return x.Max(function(z) { return z.index });
                  })
          .ToArray();

答案 1 :(得分:0)

var bar = Enumerable.From(foo)
    .GroupBy("$.id")
    .Select("$.OrderByDescending('$.index').First()")
    .ToArray();