Telstra Ответов: 1

Как отсортировать массив json


Привет, у меня есть ниже образец JSON.
{
  "SCORE": {
    "Multi-Choice": [
      {
        "VALUE": "Strong",
        "DUCED": 1
      },
      {
        "VALUE": "Good",
        "DUCED": 2
      },
      {
        "VALUE": "Satisfactory",
        "DUCED": 3
      },
      {
        "VALUE": "Weak",
        "DUCED": 4
      },
      {
        "VALUE": "Default",
        "DUCED": 5
      },
      {
        "VALUE": "None",
        "DUCED": 6
      }
    ]
  },
  "TEST_LIST": {
    "Enumerated": [
      {
        "VALUE": "Strong"
      },
      {
        "VALUE": "Good"
      },
      {
        "VALUE": "Satisfactory"
      },
      {
        "VALUE": "Weak"
      },
      {
        "VALUE": "Default"
      },
      {
        "VALUE": "None"
      }
    ]
  }
}


Для этого у меня есть ниже код.

let finalArr = [];
              for (let [key, value] of Object.entries(resObj)) {
                if (typeof value === 'object') {
                  for (let [keyInternal, valueInternal] of Object.entries(value)) {
                    valueInternal.map(arrValue => {
                      const finalObj = {
                        NAME: '',
                        VALUE: '',
                        TYPE: ''
                      };
                      finalObj.NAME = key;
                      finalObj.VALUE = arrValue;
                      finalObj.TYPE = keyInternal;
                      finalArr.push(finalObj);
                      console.log(finalArr);
                    });
                  }
                } 
                }


Приведенный выше код дает мне вывод в нижеприведенном формате. `
{
            "NAME": "SCORE",
            "VALUE": {
                "VALUE": "Strong",
                "DUCED": 1
            },
            "TYPE": "Multi-Choice"
        }


Но я хочу отобразить его в следующем формате.

{
            "NAME": "SCORE",
            "VALUE": "Strong",
            "DUCED": 1,
            "TYPE": "Multi-Choice"
        }


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

Что я уже пробовал:

Я пытаюсь объединить два массива JSON, но все равно выход не ожидается.

<pre>let finalArr = [];
              for (let [key, value] of Object.entries(resObj)) {
                if (typeof value === 'object') {
                  for (let [keyInternal, valueInternal] of Object.entries(value)) {
                    valueInternal.map(arrValue => {
                      const finalObj = {
                        RANGESET_NAME: '',
                        //RANGESET_VALUE: '',
                        RANGE_TYPE: ''
                      };
                      finalObj.NAME = key;
                      finalObj.TYPE = keyInternal;
                      finalArr.push(finalObj);
                      finalArr.push(arrValue);
                    });
                  }
                } 
                }

1 Ответов

Рейтинг:
1

Maciej Los

Проверить это: Сортировка массива JSON по одному свойству в JavaScript[^]

function sortByProperty(property){  
   return function(a,b){  
      if(a[property] > b[property])  
         return 1;  
      else if(a[property] < b[property])  
         return -1;  
  
      return 0;  
   }  
}


Использование:
items.sort(sortByProperty("pId")); //sort according to pId 
 
items.sort(sortByProperty("id")); //sort according to id