如何在javascript中按字母顺序排列JSON,如下所示?
我可以在javascript中使用.sort()方法对a-z进行排序,但我会得到如下JSON:(使用包含结果的“a-z”索引)如何在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
无法对JSON数据结构进行排序,但是,我们可以使用以下过程进行排序:
Object.keys(myResults.data)
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"
},
]