Вернуть значение из массива объектов. JavaScript

94
10 марта 2022, 04:30

Определите новый объект с именем «CityMap», который можно создать с помощью «new», используя его конструктор. Конструктор принимает один параметр в виде строки - это список городов и их широт и долгот: «Нэшвилл, Теннесси», 36,17, -86,78; "Нью-Йорк, Нью-Йорк", 40,71, -74,00; «Атланта, Джорджия», 33,75, -84,39; Объект «CityMap» должен иметь следующий метод: Возвращать название самого северного, самого восточного, самого южного или самого западного города из списка в соответствии с запросом вызывающей стороны.

function CityMap(str) { 
 
  function CityMapRecording(str) { 
    [this.city, this.latitude, this.longitude] = str.split(" ,") 
  } 
  this.list = []; 
  str.split(";").forEach(row => { 
    this.list.push(new CityMapRecording(row)); 
  }); 
  CityMap.prototype.get = function(cityName) { 
    return this.list[cityName]; 
  }; 
  this.getEasternmostCity = function() { 
    return this.list.reduce( 
      (EasternmostCity, currentMap) => 
      ({ 
        'longitude': Math.max(EasternmostCity.longitude, currentMap.longitude) 
      }) 
    ); 
  } 
} 
var cityMap = new CityMap("Nashville, TN ,36.17 ,-86.78;New York, NY ,40.71 ,-74.00;Atlanta, GA ,33.75 ,-84.39;Denver, CO ,39.74 ,-104.98;Seattle, WA ,47.61 ,-122.33;Los Angeles, CA ,34.05 ,-118.24;Memphis, TN , 35.15 ,-90.05") 
console.log(cityMap.list) 
console.log(cityMap.getEasternmostCity())

Не могу никак понять, как мне вернуть конкретно название города(и его штат) из массива объектов. Получается только вернуть долготу самого восточного города, а вернуть его название никак не получается, банально, не знаю как, помогите пожалуйста.

Answer 1

Возвращайте из функции весь объект.

function CityMap(str) { 
 
  function CityMapRecording(str) { 
    [this.city, this.latitude, this.longitude] = str.split(" ,"); 
  } 
  this.list = []; 
  str.split(";").forEach(row => { 
    this.list.push(new CityMapRecording(row)); 
  }); 
  CityMap.prototype.get = function(cityName) { 
    return this.list[cityName]; 
  }; 
  this.getEasternmostCity = function() { 
    return this.list.reduce( 
      (eastern, current) => { 
        if (+eastern.longitude < +current.longitude) 
          return current; 
        else 
          return eastern; 
      } 
    ); 
  } 
} 
var cityMap = new CityMap("Nashville, TN ,36.17 ,-86.78;New York, NY ,40.71 ,-74.00;Atlanta, GA ,33.75 ,-84.39;Denver, CO ,39.74 ,-104.98;Seattle, WA ,47.61 ,-122.33;Los Angeles, CA ,34.05 ,-118.24;Memphis, TN , 35.15 ,-90.05"); 
//console.log(cityMap.list); 
console.log("Easternmost:", cityMap.getEasternmostCity().city);

READ ALSO
Валидация госномера

Валидация госномера

Нужно что бы первые 2 символа были буквы, 3-5 были цифры

154
Закрытие вкладки через консоль

Закрытие вкладки через консоль

Есть какая-то команда, чтобы закрывать вкладку через консоль с использованием таймера типа setTimeOut?

105
Создать значение если оно не найдено

Создать значение если оно не найдено

В ruby есть find or createКак в c# сделать такое же? Единственное что нашёл, это такой хелпер

76