Есть ли в любом случае порядок / сортировку json массив объектов по номерам с использованием lodash - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь упорядочить JSON массив объектов, используя метод loda sh "orderBy". Мне нужно заказать как AS C, так и DES C с «ключом», который я могу предоставить. Но при указании идентификатора он работает не так, как ожидалось. Это мой ввод,

[
   {

      "disable":"0",
      "id":"37",
      "name":"abcd",
      "owner":"john",
   },
   {

      "disable":"1",
      "id":"38",
      "name":"test",
      "owner":"paul",
   },
    {

      "disable":"1",
      "id":"9",
      "name":"value1",
      "owner":"Khan",
   },
    {

      "disable":"1",
      "id":"7",
      "name":"value2",
      "owner":"Cathrine",
   },
    {

      "disable":"1",
      "id":"8",
      "name":"value4",
      "owner":"Venba",
   },
    {

      "disable":"1",
      "id":"2",
      "name":"value5",
      "owner":"Hawk",
   },
    {

      "disable":"1",
      "id":"4",
      "name":"value7",
      "owner":"other",
   },
]

Я использую методы, описанные ниже, но он не работает должным образом, так как столбцы «id» находятся в строке.

_.orderBy(data, [{'id': Number}], 'desc');

Мой текущий вывод:

[
   {
      "disable": "0",
      "id": "37",
      "name": "abcd",
      "owner": "john"
   },
   {
      "disable": "1",
      "id": "38",
      "name": "test",
      "owner": "paul"
   },
   {
      "disable": "1",
      "id": "9",
      "name": "value1",
      "owner": "Khan"
   },
   {
      "disable": "1",
      "id": "7",
      "name": "value2",
      "owner": "Cathrine"
   },
   {
      "disable": "1",
      "id": "8",
      "name": "value4",
      "owner": "Venba"
   },
   {
      "disable": "1",
      "id": "2",
      "name": "value5",
      "owner": "Hawk"
   },
   {
      "disable": "1",
      "id": "4",
      "name": "value7",
      "owner": "other"
   }
]

Есть ли способ правильно его отсортировать. Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 22 апреля 2020

Вы можете передать обратный вызов в _.orderBy и вернуть числовое c представление строкового значения, содержащегося в полях id. Например: o => parseInt(o.id)

Вот фрагмент:

let data = [{"disable":"0","id":"37","name":"abcd","owner":"john"},{"disable":"1","id":"38","name":"test","owner":"paul"},{"disable":"1","id":"9","name":"value1","owner":"Khan"},{"disable":"1","id":"7","name":"value2","owner":"Cathrine"},{"disable":"1","id":"8","name":"value4","owner":"Venba"},{"disable":"1","id":"2","name":"value5","owner":"Hawk"},{"disable":"1","id":"4","name":"value7","owner":"other"}];

console.log('Sorted Data: ', _.orderBy(data, o => parseInt(o.id), 'desc'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>
...