Как закорочить данные Timing Array с помощью клавиш From и To - PullRequest
0 голосов
/ 01 февраля 2019

Это JSON случайных временных данных в 24-часовом формате.

var timeArray = [
    {from: "17:00:00", to: "18:00:00"},
    {from: "09:45:00", to: "14:30:00"},
    {from: "20:00:00", to: "23:45:00"}];

ожидаемый результат сортируется как

var timeArray = [
    {from: "09:45:00", to: "14:30:00"},
    {from: "17:00:00", to: "18:00:00"},
    {from: "20:00:00", to: "23:45:00"}];

. Есть ли какая-либо логика или функция для достижения этого в javascript или angularjs

Ответы [ 5 ]

0 голосов
/ 01 февраля 2019

Используя строки времени в дополненном формате (с нулями) с нисходящими группами, такими как часы, минуты, секунды, вы можете использовать стандартную сортировку строк.

var timeArray = [{ from: "17:00:00", to: "18:00:00" }, { from: "09:45:00", to: "14:30:00" }, { from: "20:00:00", to: "23:45:00" }];

timeArray.sort((a, b) => a.from.localeCompare(b.from));

console.log(timeArray);
0 голосов
/ 01 февраля 2019

Для этого вы можете использовать метод diff для моментов

const timeArray = [
  { from: "17:00:00", to: "18:00:00" },
  { from: "09:45:00", to: "14:30:00" },
  { from: "20:00:00", to: "23:45:00" }
];

timeArray.sort((a, b) => {

  const fromA = moment(a.from, 'HH:mm:ss');
  const fromB = moment(b.from, 'HH:mm:ss');
  
  return fromA.diff(fromB);
});

console.log(timeArray);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.2.1/moment.min.js"></script>
0 голосов
/ 01 февраля 2019

Вы можете сделать это следующим образом

var timeArray = [
    {from: "17:00:00", to: "18:00:00"},
    {from: "09:45:00", to: "14:30:00"},
    {from: "20:00:00", to: "23:45:00"}];


console.log(
    _.sortBy( timeArray, function( item ) { return item.from; } )
);

Для этого вам нужно добавить библиотеку подчеркивания js из здесь

0 голосов
/ 01 февраля 2019

Я вижу, вы пометили это momentjs.Таким образом, используя момент, мы можем сделать что-то вроде этого.

timeArray.sort((a, b) => {
  var aMoment = moment(a.from, "h:mm:ss");
  var bMoment = moment(b.from, "h:mm:ss");
  return aMoment.diff(bMoment);
});
0 голосов
/ 01 февраля 2019

var timeArray = [
  { from: "09:45:00", to: "14:30:00" },
  { from: "17:00:00", to: "18:00:00" },
  { from: "20:00:00", to: "23:45:00" }
];
console.log(timeArray.sort((a, b) => b.from > a.from ? -1 : 1))
...