0
에서 개체의 속성 중 하나에 의해 개체의 사전 정렬이 같은 개체의 사전이 다음 이 속성을 오프셋으로 내가 그들을 정렬 할이 lodash
originalJson = {
"0":{
"width":55,
"offset":152
},
"A":{
"width":66,
"offset":0
},
"B":{
"width":66,
"offset":76
}
};
을 결과 객체가되어서 너무 다음과 같이 보입니다 :
sortedJson = {
"A":{
"width":66,
"offset":0
},
"B":{
"width":66,
"offset":76
},
"0":{
"width":55,
"offset":152
}
};
"A"와 "B"는 오프셋이 낮기 때문에 "0"앞에옵니다.
저는 이것을 달성하기 위해 lodash에 몇 개의 반복을 연결해야한다고 생각합니다. 저는 여기에있어 어디 :
var originalJson = {
"0":{
"width":55,
"offset":152
},
"A":{
"width":66,
"offset":0
},
"B":{
"width":66,
"offset":76
}
};
var sortedJson = _.chain(originalJson)
.map(function (val, key) {
return { character: key, details: val };
})
.sortBy(function(o) {
return o.details.offset;
})
.keyBy('character')
.mapValues('details')
.value();
$('#console').append(JSON.stringify(sortedJson,false,2));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/lodash/4.17.4/lodash.min.js"></script>
<pre id="console">
</pre>
불행하게도, 그것은 단지 이전과 같은 순서로 개체를 반환합니다. 사전에 도움을 주셔서 감사합니다!
감사합니다, 그런데 왜 다음이 작업을 수행합니다 : https : //로 jsfiddle.net/karlovac/dtzjyfLj/3/ – antun
@antun Luck? JavaScript 객체의 키에는 순서가 없으므로 인쇄하거나 JSON으로 변환 할 때 표시되는 순서는 정의되지 않습니다 (사용중인 구현을 작성한 사람까지). – smarx
:) 나는 그것이 운이 좋다고 생각하지 않는다. 그 다른 예제를 확장하여 10 개의 키 (A-J)를 갖게하고 원하는 순서대로 정렬하여 반환합니다 : https://jsfiddle.net/karlovac/dtzjyfLj/5/. 10 글자를 산란시키고 알파벳 순서로 나타나게하는 확률은 무한히 작아야합니다. – antun