Как добиться сортировки в JavaScript, как в данном примере в PHP ниже - PullRequest
1 голос
/ 05 августа 2020

Помогите, пожалуйста, в этом как достичь на JavaScript. У меня есть тип данных. Цель этой сортировки - у меня есть столбцы объектов, в которых столбцы расположены не так, как требуется. Эта функция ниже просто упорядочивает, например, столбец массива. Я протестировал этот код на своем локальном компьютере, и это результат, который у меня есть.

<?php
$data =  '[
  {
    "from": "Barcelona",
    "to": "New York",
    "instruction": "",
    "time": "2018-02-02 20:05",
    "transport": "Flight",
    "transportno": "B33",
    "seatno": "Y15"
  },
  {
    "from": "Barcelona",
    "to": "Gerona",
    "instruction": "",
    "time": "2018-02-02 20:05",
    "transport": "Bus",
    "transportno": "M31, M32, M33",
    "seatno": "Any"
  },
  {
    "from": "Madrid",
    "to": "Barcelona",
    "instruction": "",
    "time": "2018-02-02 20:05",
    "transport": "Bus",
    "transportno": "M31, M32, M33",
    "seatno": "Any"
  },
  {
    "from": "New York",
    "to": "Stockholm",
    "instruction": "",
    "time": "2018-02-02 20:05",
    "transport": "Flight",
    "transportno": "M31, M32, M33",
    "seatno": "Any"
  },
  {
    "from": "Gerona",
    "to": "Barcelona",
    "instruction": "",
    "time": "2018-02-02 20:05",
    "transport": "Bus",
    "transportno": "M31, M32, M33",
    "seatno": "Any"
  }
]';

Теперь мне нужны отсортированные таким образом данные рейс из Мадрида в Барселону, затем из Барселоны в Жирону - из Жироны в Барселону - из Барселоны в Нью-Йорк - из Нью-Йорка в Стокгольм -

$data_decode = json_decode($data, true);

usort($data_decode, function ($a, $b) {
  return $a['to'] === $b['from'] ? 0 : 1;
});


print_r($data_decode);

Вывод

Массив ([0] => Массив ([от] => Мадрид [в] => Барселона [инструкция ] => [время] => 2018-02-02 20:05 [транспорт] => Автобус [transportno] => M31, M32, M33 [seatno] => Any)

[1] => Array
    (
        [from] => Barcelona
        [to] => Gerona
        [instruction] => 
        [time] => 2018-02-02 20:05
        [transport] => Bus
        [transportno] => M31, M32, M33
        [seatno] => Any
    )

[2] => Array
    (
        [from] => Gerona
        [to] => Barcelona
        [instruction] => 
        [time] => 2018-02-02 20:05
        [transport] => Bus
        [transportno] => M31, M32, M33
        [seatno] => Any
    )

[3] => Array
    (
        [from] => Barcelona
        [to] => New York
        [instruction] => 
        [time] => 2018-02-02 20:05
        [transport] => Flight
        [transportno] => B33
        [seatno] => Y15
    )

[4] => Array
    (
        [from] => New York
        [to] => Stockholm
        [instruction] => 
        [time] => 2018-02-02 20:05
        [transport] => Flight
        [transportno] => M31, M32, M33
        [seatno] => Any
    )

) [ Завершено за 0,1 с]

Как я могу получить такой результат в JavaScript. Будем признательны за вашу помощь.

1 Ответ

0 голосов
/ 05 августа 2020

В javascript см. массив sort метод

var data = [
  {
    "from": "Barcelona",
    "to": "New York",
    "instruction": "",
    "time": "2018-02-02 20:05",
    "transport": "Flight",
    "transportno": "B33",
    "seatno": "Y15"
  },
  {
    "from": "Barcelona",
    "to": "Gerona",
    "instruction": "",
    "time": "2018-02-02 20:05",
    "transport": "Bus",
    "transportno": "M31, M32, M33",
    "seatno": "Any"
  },
  {
    "from": "Madrid",
    "to": "Barcelona",
    "instruction": "",
    "time": "2018-02-02 20:05",
    "transport": "Bus",
    "transportno": "M31, M32, M33",
    "seatno": "Any"
  },
  {
    "from": "New York",
    "to": "Stockholm",
    "instruction": "",
    "time": "2018-02-02 20:05",
    "transport": "Flight",
    "transportno": "M31, M32, M33",
    "seatno": "Any"
  },
  {
    "from": "Gerona",
    "to": "Barcelona",
    "instruction": "",
    "time": "2018-02-02 20:05",
    "transport": "Bus",
    "transportno": "M31, M32, M33",
    "seatno": "Any"
  }
];

var sortedData = data.sort( function( a, b ) {
  return a[ 'to' ] === b[ 'from' ] ? 0 : 1;
} );

console.log( sortedData );

Выход


[
  {
    "from": "Madrid",
    "to": "Barcelona",
    "instruction": "",
    "time": "2018-02-02 20:05",
    "transport": "Bus",
    "transportno": "M31, M32, M33",
    "seatno": "Any"
  },
  {
    "from": "Barcelona",
    "to": "Gerona",
    "instruction": "",
    "time": "2018-02-02 20:05",
    "transport": "Bus",
    "transportno": "M31, M32, M33",
    "seatno": "Any"
  },
  {
    "from": "Gerona",
    "to": "Barcelona",
    "instruction": "",
    "time": "2018-02-02 20:05",
    "transport": "Bus",
    "transportno": "M31, M32, M33",
    "seatno": "Any"
  },
  {
    "from": "Barcelona",
    "to": "New York",
    "instruction": "",
    "time": "2018-02-02 20:05",
    "transport": "Flight",
    "transportno": "B33",
    "seatno": "Y15"
  },
  {
    "from": "New York",
    "to": "Stockholm",
    "instruction": "",
    "time": "2018-02-02 20:05",
    "transport": "Flight",
    "transportno": "M31, M32, M33",
    "seatno": "Any"
  }
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...