Сортировка таблицы по времени - PullRequest
0 голосов
/ 11 декабря 2018

.Здравствуйте,

У меня есть этот файл json:

{
  "fbl": {
    "id": "fbl",
    "user_id": "fbl@xxx.fr",
    "nb_error": 0,
    "time": "1:27.700"
  },
  "dev": {
    "id": "dev",
    "user_id": "dev@xxx.fr",
    "nb_error": 0,
    "time": "1:12.54"
  },
  "jul": {
    "id": "jul",
    "user_id": "jul@xx.fr",
    "nb_error": 0,
    "time": "0:58.700"
  }
}

Я хочу прочитать этот файл и отсортировать его в порядке от кратчайшего до самого длинного времени (не изменяйте файл, простополучить значения сортировки, чтобы отобразить их с помощью botkit).

Во-первых, для чтения этого файла я использую:

fs.readFileSync('course.json/quiz.json', 'utf8');

Это хороший выбор?

И вы можете помочьмне отсортировать эти значения, чтобы затем отобразить их?

Спасибо

1 Ответ

0 голосов
/ 11 декабря 2018

если вы хотите изменить порядок, просто переверните значения в функции сравнения

let data = {
  "fbl": {
    "id": "fbl",
    "user_id": "fbl@xxx.fr",
    "nb_error": 0,
    "time": "1:27.700"
  },
  "dev": {
    "id": "dev",
    "user_id": "dev@xxx.fr",
    "nb_error": 0,
    "time": "1:12.54"
  },
  "jul": {
    "id": "jul",
    "user_id": "fbl@xx.fr",
    "nb_error": 0,
    "time": "0:58.700"
  }
}

const formatTime =(time)=> parseFloat(time.replace(":",""))

const compareTime = (a,b)=>{
  let a_time = formatTime(a["time"])
  let b_time = formatTime(b["time"])
  return a_time-b_time
}

const sort = (data) => {
let keys = Object.keys(data)
let dataAsArray = keys.map(e=>data[e])
return dataAsArray.sort(compareTime)
}
console.log(sort(data))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...