Linq JS.如何通过重复分组

Linq JS. How to group by repeated?

本文关键字:何通过 JS Linq      更新时间:2023-09-26

我试图使用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();

但它不工作…我知道如何用香草JS做到这一点,但我希望使用插件。

任何帮助都是感激的!

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

试试这个:

Enumerable.From(foo)
          .GroupBy(function(x) { return x.id })
          .Select(function(x)
                  {
                  return x.Max(function(z) { return z.index });
                  })
          .ToArray();
var bar = Enumerable.From(foo)
    .GroupBy("$.id")
    .Select("$.OrderByDescending('$.index').First()")
    .ToArray();