linq, js GroupBy координаты (широта, lng)

1

У меня есть следующий массив:

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 для группировки этих массивов двумя полями: lat и lng.

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. Где я был неправ?

Теги:
arrays
linq.js

1 ответ

0
Лучший ответ

Вы используете объект для группировки. Каждый новый сгенерированный объект является новым объектом и не равен последнему или любому другому объекту.

Вы можете принять 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>
  • 0
    Это круто, но как я могу установить координаты в качестве ключа массива? [Qlat, Qlng] => {info[]}
  • 0
    Я не понимаю, что вам нужно. пожалуйста, добавьте пример результата к вопросу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню