【问题标题】:linq.js groupby with Jsonlinq.js groupby 与 Json
【发布时间】:2013-08-06 08:57:37
【问题描述】:

这是我的简化形式的 Json 对象。

 var jsonObject =
    [
        {"City":"Monroe","Country":"USA","Latitude":47.8524,"Longitude":-121.98151},
        {"City":"Austin","Country":"USA","Latitude":30.40137,"Longitude":-97.73542},
        {"City":"Austin","Country":"USA","Latitude":30.32198,"Longitude":-97.70864}
    ]

我想通过使用 City 进行分组并获取属于特定城市的记录数,到目前为止我尝试过的代码是

    var query2 = $.Enumerable.From(jsonObject)
.GroupBy(
function(record) {return record.City},

function(record) {
        return {City: record.City}
    },
function(rec) {
        return {City:rec}
    }
).ToArray();

我仍然无法理解我在这里做错了什么。我是 linq.js 的新手...任何帮助都将不胜感激,或者至少为我指明正确的方向。

【问题讨论】:

  • var query4 = $.Enumerable.From(jsonObject) .GroupBy( "{ City: $.City}", null, function (key, g) { var result = { City: key.City }; return result; }, "$.City" ) .ToArray(); 还是不行...:(

标签: javascript jquery jquery-plugins linq.js


【解决方案1】:

所以你只是想得到城市的数量?试试这个:

var query = Enumerable.From(jsonObject)
    .GroupBy(
        "$.City",
        null,
        "{ City: $, Count: $$.Count() }") // $: Key, $$: Group
    .ToArray();

【讨论】:

  • 这对我了解 $ 和 $$ 的含义很有帮助
  • $ 在 lambda 字符串中使用时仅对应于函数的参数。它们的数量表示它最多代表四个参数。所以$ 是第一个参数,$$ 是第二个,$$$ 是第三个,$$$$ 是第四个。所以只要你知道函数的预期签名是什么,应该很容易破译。
【解决方案2】:

//对记录进行分组

$.Enumerable.From(heatMapObjects)
                                .GroupBy(
                                    "{ City: $.City }",
                                    null,
                                    function (key, g) {
                                        var result = {
                                            City:key.City                                      
                                        };
                                        var groupResults = [];
                                        g.ForEach(function (item) {
                                            groupResults.push(item);
                                        });

                                    //push into array
                                    groupedRecordsCollection.push(groupResults);
                                },
                                "$.City" // compare selector needed
                            )
                            .ToArray();

这解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多