【问题标题】:linq,js GroupBy coordinates(lat, lng)linq,js GroupBy 坐标(lat, lng)
【发布时间】:2018-02-19 18:22:27
【问题描述】:

我有以下数组:

var coord = [
{flat:"7", house:"14", indication1: "60", lat: "47.93896450", lng:"33.43282100"},
{flat:"9", house:"18", indication1: "65", lat: "47.87736800", lng:"33.27488850"},
{flat:"10", house:"14", indication1: "24", lat: "47.93896450", lng:"33.43282100"},
{flat:"11", house:"14", indication1: "11", lat: "47.93896450", lng:"33.43282100"},
{flat:"12", house:"14", indication1: "56", lat: "47.93896450", lng:"33.43282100"}];

我想使用 linq.js 将这些数组按两个字段分组:latlng

var h = Enumerable.From(data).GroupBy(
            "{lat: $.lat, lng: $.lng}",
            "{ House: $.house, Flat: $.flat }",
            "{ Qlat: $.lat, Qlng: $.lng, info: $$.ToArray()}").ToArray();

console.log(h);

我希望看到 2 个组,但得到了全部 5 个。我哪里错了?

【问题讨论】:

    标签: javascript arrays linq.js


    【解决方案1】:

    您使用对象进行分组。每个新生成的对象都是一个新对象,不等于最后一个对象或任何其他对象。

    您可以将null 作为第一个参数,将带有分组信息的字符串作为第四个参数。

    var coord = [{ flat: "7", house: "14", indication1: "60", lat: "47.93896450", lng: "33.43282100" }, { flat: "9", house: "14", indication1: "65", lat: "47.87736800", lng: "33.27488850" }, { flat: "10", house: "14", indication1: "24", lat: "47.93896450", lng: "33.43282100" }, { flat: "11", house: "14", indication1: "11", lat: "47.93896450", lng: "33.43282100" }, { flat: "12", house: "14", indication1: "56", lat: "47.93896450", lng: "33.43282100" }],
        grouped = Enumerable.From(coord).GroupBy(
            null,
            "{ House: $.house, Flat: $.flat }",
            "{ Qlat: $.lat, Qlng: $.lng, info: $$.ToArray()}",
            "$.lat + '|' + $.lng"
        ).ToArray();
    
    console.log(grouped);
    .as-console-wrapper { max-height: 100% !important; top: 0; }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/linq.js/2.2.0.2/linq.js"></script>

    【讨论】:

    • 这很酷,但是如何将坐标设置为数组键? [Qlat, Qlng] => {info[]}
    • 我不明白,你需要什么。请在问题中添加示例结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    • 2023-04-07
    • 2018-11-12
    相关资源
    最近更新 更多