我正在尝试对 JSON 值数组进行排序,但要排序的属性嵌套在 JSON 对象中。 对于此示例,将使用 data.nested-name 完成排序。

我尝试使用https://stackoverflow.com/a/8175221/2053159但没有任何成功。

[
{
name: 'a75',
data: {nested-name:"zz\, Hello// There="}},
{
name: 'z32',
data: {nested-name:"aa\, Hello// There="}},
];

预期输出 ->

[
{
name: 'a75',
data: {nested-name:"aa\, Hello There="}},
{
name: 'z32',
data: {nested-name:"zz\, Hello There="}},
];

嵌套名称确实包含很多反斜杠和正斜杠以及其他特殊字符。 我不使用外部库,请提供使用原生 JavaScript 的解决方案。

#1楼 票数:3 已采纳

假设 arr 是你的数组,你可以这样排序:

arr.sort( ( a, b ) => a.data[ "nested-name" ] > b.data[ "nested-name" ] )

为了获得更高的字符串比较精度,您可以使用localeCompare

arr.sort( ( a, b ) => a.data[ "nested-name" ].localeCompare(b.data[ "nested-name" ]) )

#2楼 票数:1

array.sort函数采用可选参数function(a,b) ,它必须根据比较返回-1, 0, or 1
您的数据定义包含错误nested-name:"zz\\, Hello// There=" 如果您使用-那么您必须引用名称。
工作样本在这里。

 var arr=[ { name: 'a75', data: {'nested-name':"zz\\, Hello// There="}}, { name: 'z32', data: {'nested-name':"aa\\, Hello// There="}}, ]; var result=arr.sort(function(a,b){ return a.data["nested-name"] > b.data["nested-name"]; }); console.log(result);

  ask by NewBee translate from so

未解决问题?本站智能推荐:

2回复

使用Javascript从嵌套JSON进行排序索引

如何将递归排序键添加到无限层次结构中,如下所示: 我想获得一个可排序的索引。 例如,节点AC的0000.0001.0003或0001.0003 。 LeadingZeroes的功能是 应该在层次结构的每个级别中按排序编号对它进行排序,每次都应该重新设置排序编号,因为我想通过将其设置
3回复

如何按值对深层嵌套对象进行排序?

我正在尝试按最低金额amountinINR键对医院数组进行排序,但是我被困在对医院的深层嵌套Object array进行排序的过程中。 这是我的JSON对象。 我正在尝试这样解决 我想按最低的amountinINR值对医院进行排序,并返回内部已排序医院的相同JSON对象。 请,有人可
2回复

如何通过嵌套键对对象进行排序

我有一个对象的对象。 我想根据id对它进行排序。 这是我的数据
3回复

如何按属性对对象数组进行排序?[复制]

这个问题在这里已经有了答案: 按属性值对对象数组进行排序31 个回答 从 JavaScript 对象创建 HTML 表格(9 个回答) 去年
1回复

如何通过两个属性对json数据进行排序

http://jsfiddle.net/dy8w8r7d/ 如何通过两个属性对JSON数据进行排序? 以下功能仅按Episode排序.. 目标 :按Episode升序排列,然后按Sequence升序排列 var data = [ { ArticleId: 2, Episode:
1回复

按特定属性值对JavaScript对象进行排序

如果我有一个 JavaScript 对象,例如: 有没有办法按照这个特定的顺序对它们进行排序?
5回复

根据其属性值对JSON数组进行排序

这是我获得的JSON数组: 但是我需要通过“Age”属性对这个JSON数组desc进行排序。 我想要的JSON数组应如下所示: 怎么做到这一点?
1回复

在适当的位置对嵌套的JSON数组进行排序[重复]

这个问题已经在这里有了答案: 按属性对JavaScript对象数组进行排序 28个答案 这是我的JSON结构: 我需要就位测量对象中的值。 有可能吗? 如果没有,应该采用哪种优化方法? 我可以将这些值提取到一个临时数组中,然后对其进行排序,然后搜索它们各自的键并重新排