JavaScript, найдите самое низкое значение в массиве объектов - PullRequest
0 голосов
/ 06 октября 2019

Я создаю пользовательский визуал с использованием deckgl, вот код и весь визуал

datastudio.google.com / reports / fe15b7b1-aa4a-4f1b-9b29-52db4734c526

В настоящее время я просто использую первый элемент в качестве ссылки для начального представления.

var data1 = DEFAULT;
var firstvalue = data1[0].coordinateid.toString();
var coordinates = firstvalue.split(",");
var longitudeView =parseFloat(coordinates[0]);
var latitudeView =parseFloat(coordinates[1]);

Вот пример массива объектов, который я использую

"DEFAULT": [
      {
        "coordinateid": [
          "140,-34.777302"
        ],
        "colorid": [
          "169,255,169"
        ],
        "sizeid": [
          31
        ]
      },
      {
        "coordinateid": [
          "143.4999358,-34.77"
        ],
        "sizeid": [
          150
        ]
      },
      {
        "coordinateid": [
          "143.4999381,-20"
        ],
        "colorid": [
          "169,169,169"
        ],
        "sizeid": [
          1900
        ]
      }
    ]

какчтобы получить самые низкие значения для поля "координаты", в этом примере это [140, -20] Я новичок в javascript, я понимаю, как получить доступ к значениям отдельных объектов, но не уверен, как пройти через весь массив,Есть функция для прямого доступа ко всем значениям поля «Coordinateid» или я должен использовать цикл.

1 Ответ

1 голос
/ 06 октября 2019

У вас есть 2 варианта:

  1. более быстрый - простой цикл, в котором вы всегда сохраняете самый низкий из найденных:

    let lowest = arr[0];
    for(let i=1; i<0; i++)
    {
        if(arr[i] < lowest) // I used < for the example, enter your comparison logic here
         lowest = arr[i];
    }
    
  2. Менее эффективный способ, но может помочь вам позже в вашем коде: сортировка массива с использованием 'Array.sort' метод:

    array.sort( (el1, el2) => {
      if(el1 > el2) // again- I used > sign, put the actual comparison logic here, i.g: el1.coordinateid[0] > el2.coordinateid[0] and so on
        return -1;
      else return 1;
    });
    

Обратите внимание, что массив sort работает так: вы предоставляете ему функцию обратного вызова, которая получает 2 элемента массива. Если вы вернете -1, это означает, что первый переданный элемент должен прийти перед вторым элементом, когда они возвращаются в отсортированный массив, 0 означает, что они равны, а 1 означает, что 2-й элемент передан вФункция должна быть на первом месте. См. Ссылку метода sort выше для более подробного объяснения.

...