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
'programing' 카테고리의 다른 글
리액트 라우터에서 링크 컴포넌트를 추가하는 Material-ui (0) | 2023.03.02 |
---|---|
WordPress: 커스텀 투고 타입용 기능 (0) | 2023.02.25 |
Model, ModelMap 및 ModelAndView의 차이점은 무엇입니까? (0) | 2023.02.25 |
Spring Boot 디폴트테스트에서 Ilgulate State Exception이 느려집니다. (0) | 2023.02.25 |
_($string) 함수는 PHP에서 무엇을 합니까? (0) | 2023.02.25 |