如何在javascript中按字母顺序排列JSON,如下所示?

如何在javascript中按字母顺序排列JSON,如下所示?,javascript,arrays,json,Javascript,Arrays,Json,我可以在javascript中使用.sort()方法对a-z进行排序,但我会得到如下JSON:(使用包含结果的“a-z”索引) 无法对JSON数据结构进行排序,但是,我们可以使用以下过程进行排序: 使用Object.keys(myResults.data) 把钥匙分类 创建reduce函数以将有序关键帧转换为有序对象 这段代码就在这里,我希望它有助于: var myResults={ 数据:{ C:[ { “姓名”:“凯文·多伊”, “年龄”:22 } ], A:[ { “姓名”:“Alex

我可以在javascript中使用.sort()方法对a-z进行排序,但我会得到如下JSON:(使用包含结果的“a-z”索引)


无法对JSON数据结构进行排序,但是,我们可以使用以下过程进行排序:

  • 使用
    Object.keys(myResults.data)
  • 把钥匙分类
  • 创建reduce函数以将有序关键帧转换为有序对象
  • 这段代码就在这里,我希望它有助于:

    var myResults={
    数据:{
    C:[
    {
    “姓名”:“凯文·多伊”,
    “年龄”:22
    }
    ],
    A:[
    {
    “姓名”:“Alex Doe”,
    “年龄”:31岁,
    }
    ],
    B:[
    {
    “姓名”:“Boris Doe”,
    “年龄”:22
    },
    {
    “名称”:“鸟人”,
    “年龄”:30岁
    },
    ]
    }
    };
    var originalData=myResults.data;
    // 1. 拿到钥匙
    var dataKeys=Object.keys(originalData);
    // 2. 把钥匙分类
    var sortedKeys=dataKeys.sort();
    // 3. 再次创建对象
    var orderedData=sortedKeys.reduce(函数(结果,键){
    返回Object.assign(
    {},
    结果,,
    {[key]:myResults.data[key]}
    );
    }, {});
    document.getElementById('original').innerHTML=JSON.stringify(originalData);
    document.getElementById('sorted').innerHTML=JSON.stringify(orderedData)
    
    h3{
    保证金:0;
    }
    代码{
    显示:块;
    边缘底部:15px;
    填充:10px;
    背景色:#f9f9f9;
    }
    原始数据
    
    有序数据
    var name=[{name:“a1”}、{name:“a2”}、{name:“b1”}、{name:“b2”}……];
    变量数据={};
    对于(var i=0;i
    JavaScript对象未排序。如果要迭代对象的属性,可以对键进行排序,然后检索值:

    const结果={
    数据:{
    Z:[],
    F:[],
    A:[],
    D:[]
    }
    };
    对象
    .键(结果.数据)
    .sort()
    .map(key=>console.log(key,result.data[key])更新:
    存在一个使之成为可能的JavaScript库:Lodash Utilities()。包含.sort()JSON的方法(无数组)和获取我在这个问题中所问的JSON的方法。我只是这样做了:

    //First, order my JSON alphabetically with _.sortBy method (I can even order by a nested property in my JSON)    
    var order = _.sortBy(require('./names'), function (el) { return el.name });
    
    //Second, I group my order result by the first letter of my property 'name' in my JSON
    var list = _.groupBy(order, (b) => b.name[0].toUpperCase());
    
    这是我的意见:

    [
      {"name":"Mark"},
      {"name":"Jul"},
      {"name":"Alicia"},
    ]
    
    这是我的输出:

    [
     "A": [
        {
          "name": "Alicia"
        }
      ],
      "J": [
        {
          "name": "Jul"
        },
      ],
      "M": [
        {
          "name": "Mark"
        },
      ]
    

    我希望这对某人有帮助

    你想根据他们名字中的第一个字母来分组吗?你好@Marco。很高兴有你在。为了得到你问题的好答案,你这边还有一些工作要做。请向我们提供一些代码,显示您迄今为止所尝试的内容。您可能希望发布源数组,因为正在回答的人假设它是与您所需结果类似的对象。是的!我想根据他们名字中的第一个字母对其进行分组。你需要澄清你的源数据是什么。“JSON”不是一个东西,它将是一个数组或一个对象。假设源数据是一个数组,这可能是正确的。如果它是一个对象而不是数组,您可以将“for(var i=0;i[ {"name":"Mark"}, {"name":"Jul"}, {"name":"Alicia"}, ]
    [
     "A": [
        {
          "name": "Alicia"
        }
      ],
      "J": [
        {
          "name": "Jul"
        },
      ],
      "M": [
        {
          "name": "Mark"
        },
      ]