首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带计数的Linq.Js群

带计数的Linq.Js群
EN

Stack Overflow用户
提问于 2015-01-28 16:17:54
回答 2查看 7.2K关注 0票数 2

我有以下数组:

代码语言:javascript
复制
var data=  [{ "Id": 1, "Name": "NameOne"}
            { "Id": 2, "Name": "NameTwo"}
            { "Id": 2, "Name": "NameTwo"}]
            { "Id": 3, "Name": "NameThree"}]

使用linq.js,我想返回以下数组:

代码语言:javascript
复制
var data=  [{ "Id": 1, "Name": "NameOne", Total: 1}
            { "Id": 2, "Name": "NameTwo", Total: 2}
            { "Id": 3, "Name": "NameThree", Total: 1}]

这意味着我需要使用GroupBy()和Count()。我不知道如何使用linq.js引用来应用它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-29 02:40:33

很简单,真的:

代码语言:javascript
复制
var data = [
    { Id: 1, Name: 'NameOne' },
    { Id: 2, Name: 'NameTwo' },
    { Id: 2, Name: 'NameTwo' },
    { Id: 3, Name: 'NameThree' }
];
var query = Enumerable.From(data)
    // GroupBy (keySelector, elementSelector, resultSelector, compareSelector)
    .GroupBy(
        null, // (identity)
        null, // (identity)
        "{ Id: $.Id, Name: $.Name, Total: $$.Count() }",
        "'' + $.Id + '-' + $.Name"
    )
    .ToArray();

使用包含GroupBy()resultSelector重载,您将需要获取分组项的计数(第二个参数)。

票数 4
EN

Stack Overflow用户

发布于 2015-01-28 18:46:05

你可能对数据不统一有问题。减少使您的数据结构变平,然后您可以在.Select()中按您的意愿对它进行操作。

代码语言:javascript
复制
var intialData = [[{ "Id": 1, "Name": "NameOne"}, { "Id": 2, "Name": "NameTwo"}, { "Id": 2, "Name": "NameTwo"}], { "Id": 3, "Name": "NameThree"}];         

var data = Enumerable.From(intialData.reduce(function(a,b) { return a.concat(b); }))
                     .GroupBy(function(item) { return item.Id; })
                     .Select(function(item) { return {"Id":item.source[0].Id, "Name":item.source[0].Name, "Total": item.source.length}; })
                     .ToArray();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28197166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档