반응형
JSON을 알파벳 순으로 첫 번째 문자로 정렬
다음과 같은 JSON이 있습니다.
[
{
"id": 1,
"slug": "abakan",
"name": "Абакан"
},
{
"id": 4,
"slug": "almetevsk",
"name": "Альметьевск"
},
{
"id": 10,
"slug": "astrahan",
"name": "Астрахань"
},
{
"id": 11,
"slug": "barnaul",
"name": "Барнаул"
},
...
]
그리고 이 방법으로 이것을 얻습니다.
public function getCities()
{
$cities = City::mainCities()->get(['id', 'slug', 'name']);
return response()->json($cities);
}
이 목록을 알파벳과 문자로 정렬하려면 어떻게 해야 합니까?예를 들어 다음과 같습니다.
"A": [
{
"id": 1,
"slug": "abakan",
"name": "Абакан"
},
{
"id": 4,
"slug": "almetevsk",
"name": "Альметьевск"
}
],
"B": [
{
"id": 11,
"slug": "barnaul",
"name": "Барнаул"
},
...
]
기타 등등...
백엔드에 라라벨이 있고 전면에 VueJ가 있습니다.
솔루션:
var cities = [
{ id: 1, slug: "abakan", name: "Абакан" },
{ id: 4, slug: "almetevsk", name: "Альметьевск" },
{ id: 11, slug: "barnaul", name: "Барнаул" },
{ id: 10, slug: "astrahan", name: "Астрахань" }
];
cities.sort(function(a, b) {
return a.slug[0].localeCompare(b.slug[0]);
});
var newCities = {};
for (var i = 0; i < cities.length; i++) {
var c = cities[i].slug[0].toUpperCase();
if (newCities[c] && newCities[c].length >= 0)
newCities[c].push(cities[i]);
else {
newCities[c] = [];
newCities[c].push(cities[i]);
}
}
console.log(newCities);
이것으로 충분합니다.
var items = [
{
"id": 11,
"slug": "barnaul",
"name": "Барнаул"
},
{
"id": 1,
"slug": "abakan",
"name": "Абакан"
},
{
"id": 4,
"slug": "almetevsk",
"name": "Альметьевск"
},
{
"id": 10,
"slug": "astrahan",
"name": "Астрахань"
}
];
var sortedItems = items.sort((a, b) => a.slug.localeCompare(b.slug));
var results = {};
for (var i = 0; i < 26; i++) {
var char = String.fromCharCode(97 + i);
var bigChar = char.toUpperCase();
results[bigChar] = [];
for (var s = 0; s < sortedItems.length; s++) {
if (sortedItems[s].slug.startsWith(char)) {
results[bigChar].push(sortedItems[s]);
}
}
}
console.log(results)
언급URL : https://stackoverflow.com/questions/43750568/sorting-json-alphabetically-by-first-letter
반응형
'programing' 카테고리의 다른 글
Guzzlehttp - Guzzle 6의 응답 본문은 어떻게 얻을 수 있습니까? (0) | 2022.09.13 |
---|---|
클라이언트에 JavaScript 파일을 강제로 새로 고치려면 어떻게 해야 합니까? (0) | 2022.09.13 |
MariaDB: 위도 및 경도 점의 원형 반지름이 다각형과 교차하는지 확인 (0) | 2022.09.13 |
언제 Memcached 대신 Memcache를 사용해야 합니까? (0) | 2022.09.13 |
MariaDB Galera 클러스터: 운영 서버에서 wresp_sst_method 변경 (0) | 2022.09.13 |