Javascript 按首字母顺序对JSON排序

Javascript 按首字母顺序对JSON排序,javascript,laravel-5,vuejs2,Javascript,Laravel 5,Vuejs2,我有这样一个JSON: [ { "id": 1, "slug": "abakan", "name": "Абакан" }, { "id": 4, "slug": "almetevsk", "name": "Альметьевск" }, { "id": 10, "slug": "astrahan", "name": "Астрахань" }, { "id": 11, "slug

我有这样一个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": "Барнаул"
  },
  ...
]
等等

我的后端是Laravel,前端是VueJS。

这对我很有用:

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)
var项目=[
{
“id”:11,
“鼻涕虫”:“巴诺”,
“名称”:“Бааааааааа”
},
{
“id”:1,
“鼻涕虫”:“阿巴坎”,
“名称”:“Ааааааа”
},
{
“id”:4,
“slug”:“almetevsk”,
“名称”:“А峈峈峈峈峈峈峈峈峈峈2375
},
{
“id”:10,
“鼻涕虫”:“阿斯特拉罕”,
“名称”:“АСаааа”
}
];
var sortedItems=items.sort((a,b)=>a.slug.localeCompare(b.slug));
var结果={};
对于(变量i=0;i<26;i++){
var char=String.fromCharCode(97+i);
var bigChar=char.toUpperCase();
结果[bigChar]=[];
对于(var s=0;s
我的解决方案:

var城市=[
{id:1,slug:“abakan”,名字:“Аааааа”},
{id:4,slug:“almetevsk”,名字:“Ааааааааааааа1072,
{id:11,slug:“barnaul”,名字:“Бааааааа”},
{id:10,鼻涕虫:“阿斯特拉罕”,名字:“АСаааа”}
];
城市.排序(功能(a,b){
返回a.slug[0].localeCompare(b.slug[0]);
});
var newCities={};
对于(变量i=0;i=0)
新城市[c].push(城市[i]);
否则{
新城[c]=[];
新城市[c].push(城市[i]);
}
}

console.log(新城)这个答案可能已经在这里得到了回答:希望这有帮助!