источник, пункт назначения, расстояние - рассчитать источник и пункт назначения с наибольшим расстоянием - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь решить задачу, которая вычисляет наибольшее расстояние между любыми двумя точками.

Я ожидаю, что выходные данные рассчитают исходную и целевую пары, которые имеют наибольшее пройденное расстояние.

      obj = [{
                source: a,
                destination: b,
                distance: 200
              },
              {
                source: b,
                destination: a,
                distance: 100
              },
              {
                source: a,
                destination: c,
                distance: 100
              }
            ]     

В этом случае мой выходной сигнал будет самым высоким: Distance = [a, b, 300] (между a и b => 200 + 100 = 300)

Я пытаюсь написать функцию в JavaScript.какая структура данных будет здесь уместна?

Сначала я попытался создать карту и добавить кортеж [source, destination] в качестве ключа, например так:

 {
   [a, b]: 200,
   [a, c]: 100
 }

const obj = [{
                source: a,
                destination: b,
                distance: 200
              },
              {
                source: b,
                destination: a,
                distance: 100
              },
              {
                source: a,
                destination: c,
                distance: 100
              }
            ]

    function highestDistance(obj) {
          const highestPair = obj[0];
          const myMap = new Map();
          obj.forEach(pair => {
            let [source, destination] = [pair.source, pair.destination];
            if( myMap.has([source, destination]) || myMap.has([source, destination])){
                myMap.set() 
                 // not sure how to proceed and add the tuple to map here
                // I intend to compare the current highest and update highestPair value if the current pair distance is collectively bigger.
            } else {
              myMap.set([source, destination], pair[distance])
           }

          })

          return obj;
        }

Ввод:

      {
        source: a,
        destination: b,
        distance: 200
      },
      {
        source: b,
        destination: a,
        distance: 100
      },
      {
        source: a,
        destination: c,
        distance: 100
      }

Вывод:

[a, b, 300]

Не могли бы вы помочь мне решить эту проблему?Большое вам спасибо!

1 Ответ

0 голосов
/ 11 июня 2019

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

var obj = [{
                source: 'a',
                destination: 'b',
                distance: 200
              },
              {
                source: 'b',
                destination: 'a',
                distance: 100
              },
              {
                source: 'a',
                destination: 'c',
                distance: 100
              }
            ]

var distMap = obj.reduce((f, n)=> {
  const {source,destination, distance } = n;
  const key  = `${source}->${destination}`
  const key2 = `${destination}->${source}`

  if(f[key2]){
    f[key2] = distance+ f[key2]
  } else {
    f[`${source}->${destination}`] = distance
  }
  return f
}, {}) // {a->b: 300, a->c: 100}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...