Как сортировать местоположения по расстоянию с ограничением того, что местоположение забора должно идти перед местоположJavascript

Форум по Javascript
Ответить
Anonymous
 Как сортировать местоположения по расстоянию с ограничением того, что местоположение забора должно идти перед местополож

Сообщение Anonymous »

мне было интересно, есть ли решение для сортировки местоположений на расстоянии от первого эталонного местоположения, но уважение к тому, что местоположение засаживания должно быть помещено до места доставки. < /p>
Я думал, если это даже Возможно, когда местоположение одного заказа может быть доставка другого заказа, и если у нас есть два заказа, в которых локации посадки и доставки изменяются (местоположение заказа равна месту доставки B Заказа и место доставки заказа равна месту заказа заказа), затем его никогда не будет соответствовать ограничению. Это грубо, так как, вероятно, графики должны использоваться для лучшего результата. < /P>
Я прав, что, вероятно, невозможно решить этими ограничениями? < /P>
interface Order {
id: number;
pickup: Location;
delivery: Location;
}

interface Location {
id: number;
latitude: number;
longitude: number;
}

// Function to calculate distance using the Haversine formula
function getDistance(loc1: Location, loc2: Location): number {
/** Implementation not important here **/
}

function getSortedUniqueLocations(orderArray: Order[]): Location[] {
if (orderArray.length === 0) return [];

const uniqueLocations = new Map();

for (let i = 0; i < orderArray.length; i++) {
const order = orderArray;
const pickup = order.pickup;
const delivery = order.delivery;

const pickupKey = `${pickup.latitude},${pickup.longitude}`;
const deliveryKey = `${delivery.latitude},${delivery.longitude}`;

if (!uniqueLocations.has(pickupKey)) {
uniqueLocations.set(pickupKey, pickup);
}
if (!uniqueLocations.has(deliveryKey)) {
uniqueLocations.set(deliveryKey, delivery);
}
}

const locations = Array.from(uniqueLocations.values());

const firstLocation = orderArray[0].pickup;
locations.sort((a, b) => getDistance(firstLocation, a) - getDistance(firstLocation, b));

return locations;
}



Подробнее здесь: https://stackoverflow.com/questions/794 ... -must-go-b
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»