programing

javascript에서 json 개체를 정렬합니다.

i4 2023. 2. 25. 19:46
반응형

javascript에서 json 개체를 정렬합니다.

예를 들어, 에는 다음과 같은 코드가 있습니다.

var json = {
    "user1" : {
        "id" : 3
    },
    "user2" : {
        "id" : 6
    },
    "user3" : {
        "id" : 1
    }
}

어떻게 하면 이 json을 이렇게 분류할 수 있을까요?

var json = {
    "user3" : {
        "id" : 1
    },
    "user1" : {
        "id" : 3
    },
    "user2" : {
        "id" : 6
    }
}

ID로 사용자를 분류했습니다.
javascript로 어떻게 해야 할지..

일단 그건 JSON이 아니에요.JavaScript 객체 리터럴입니다.JSON은 데이터의 문자열 표현으로, JavaScript 구문과 매우 유사합니다.

두 번째, 물건이 있습니다.그들은 분류되지 않았다.요소의 순서는 보장할 수 없습니다.확실한 순서를 원할 경우 어레이를 사용해야 합니다.이를 위해서는 데이터 구조를 변경해야 합니다.

한 가지 옵션은 다음과 같이 데이터를 표시하는 것입니다.

var json = [{
    "name": "user1",
    "id": 3
}, {
    "name": "user2",
    "id": 6
}, {
    "name": "user3",
    "id": 1
}];

이제 객체 배열이 있으므로 정렬할 수 있습니다.

json.sort(function(a, b){
    return a.id - b.id;
});

결과 어레이는 다음과 같습니다.

[{
    "name": "user3",
    "id" : 1
}, {
    "name": "user1",
    "id" : 3
}, {
    "name": "user2",
    "id" : 6
}];

여기 Json의 javascript 표현을 정렬하는 간단한 스니펫이 있습니다.

function isObject(v) {
    return '[object Object]' === Object.prototype.toString.call(v);
};

JSON.sort = function(o) {
if (Array.isArray(o)) {
        return o.sort().map(JSON.sort);
    } else if (isObject(o)) {
        return Object
            .keys(o)
        .sort()
            .reduce(function(a, k) {
                a[k] = JSON.sort(o[k]);

                return a;
            }, {});
    }

    return o;
}

다음과 같이 사용할 수 있습니다.

JSON.sort({
    c: {
        c3: null,
        c1: undefined,
        c2: [3, 2, 1, 0],
    },
    a: 0,
    b: 'Fun'
});

출력:

{
  a: 0,
  b: 'Fun',
  c: {
    c2: [3, 2, 1, 0],
    c3: null
  }
}

어떤 면에서는, 당신의 질문이 매우 정당해 보이지만, 저는 여전히 그것을 '오바마'라고 부를 수 있습니다.XY problem최종 결과는 어떤 식으로든 정렬된 값을 표시하려는 것 같습니다.Bergi가 코멘트에서 말한 것처럼 Javascript 오브젝트에 의존할 수 없습니다.{i_am: "an_object"}특정 순서로 속성을 표시합니다.

표시 순서에 대해서는, 오브젝트의 각 키를 취득하는 것을 추천합니다(즉,i_am)를 사용하여 정렬합니다.그런 다음 표시할 개체의 요소를 검색할 때 이 배열을 사용하십시오.유사 코드:

var keys = [...]
var sortedKeys = [...]
for (var i = 0; i < sortedKeys.length; i++) {
  var key = sortedKeys[i];
  addObjectToTable(json[key]);
}
if(JSON.stringify(Object.keys(pcOrGroup).sort()) === JSON.stringify(Object.keys(orGroup)).sort())
{
    return true;
}

언급URL : https://stackoverflow.com/questions/17684921/sort-json-object-in-javascript

반응형